我正在用javascript和discord.js v14编写我的第一个不和谐机器人。我的机器人在私聊中只是服从命令,如果是通过服务器,它不会发回消息。有人能帮助我吗?我的代码:
//npm é um gerenciador de pacotes
const { Client, GatewayIntentBits, Partials } = require('discord.js');
const config = require('./config.json');
const { Guilds, GuildMembers, DirectMessages } = GatewayIntentBits;
const { Channel, GuildMember, Message, User, Reaction } = Partials;
const client = new Client({
intents: [Guilds, GuildMembers, DirectMessages],
partials: [Channel, GuildMember, Message, User, Reaction],
});
client.on('ready', () => {
console.log(
`Bot foi iniciado, com ${client.users.cache.size} usuários, em ${client.channels.cache.size} canais, em ${client.guilds.cache.size} servidores.`,
);
client.user.setActivity(
`Eu estou em ${client.guilds.cache.size} servidores.`,
); //atualiza status do bot
});
client.on('guildCreate', (guild) => {
console.log(
`O bot entrou nos servidores: ${guild.cache.name} (id: ${guild.cache.id}). População: ${guild.cache.memberCount} membros.`,
);
client.user.setActivity(`Estou em ${client.guilds.cache.size} servidores!`);
}); //toda vez q o bot entra num server, esse comando é executado e atualiza o status do bot
client.on('guildDelete', (guild) => {
console.log(
`O bot foi removido do servidor: ${guild.cache.name} (id: ${guild.cache.id}).); client.user.setActivity(Serving ${client.guilds.cache.size} servers!`,
);
}); //avisa caso o bot seja excluido de um servidor
client.on('messageCreate', async (message) => {
let prefix = config.prefix; //liga o prefixo do arquivo config para comando
if (message.author.bot) return; //nao responda outros bots
if (!message.content.startsWith(config.prefix)) return;
//if(message.channel.type === "dm") return; //nao responda por DM
const args = message.content.slice(config.prefix.length).trim().split(/ +/g); //liga o prefix do config para comando
const comando = args.shift().toLowerCase(); //parametros do comando
if (comando === 'ping') {
//define o comando depois do prefixo digitado pelo usuario
const m = await message.channel.send('Ping?'); //mensagem
m.edit(
`:ping_pong: Pong! A latencia é ${
m.createdTimestamp - message.createdTimestamp
} ms. A latencia da API é ${Math.round(client.ws.ping)} ms`,
); //edita a propria mensagem 'm'
}
}); //evento de mensagem do bot
client.login(config.token); //liga o bot
我试图重新安装discord.js,我也安装了一个旧版本,但显然问题不是在库中,因为它的工作,而只是在私人聊天。
1条答案
按热度按时间qnakjoqk1#
因为如果没有
MessageContent
意图,你只能在DM中获得message.content
,而不能在公会中获得。它将是an empty string in guilds。您需要将
MessageContent
添加到Intent数组中: