抱歉,如果格式不正确,我以前从未在这里写过问题。
首先,这是我第一次用 JavaScript 编写任何东西,所以这可能是我犯的一些愚蠢的错误,导致了我的问题。
我想要做的是当成员加入服务器时发送一条消息,并在成员离开时发送不同的消息。当有人加入服务器时,会发送加入消息,一切都工作得很好,但是当一个成员离开时,绝对不会发生任何事情。我在 joinMessage 和leaveMessage 函数中放入了一些console.logs,并且得到了joinMessage 的输出,但没有任何可删除的输出。我已在 Discord 开发人员门户上启用了 Presence Intent 和 Server Members Intent。
加入和离开消息功能位于底部,但我继续添加了整个功能,以便人们可以更好地帮助我。机器人令牌和通道 ID 已被删除,它们在我的代码版本中是正确的。
console.log('Starting');
const Discord = require('discord.js');
const { Client, Intents } = require('discord.js');
const commandHandler = require("./commands");
const client = new Discord.Client({ intents: [Intents.FLAGS.GUILDS, Intents.FLAGS.GUILD_MESSAGES, Intents.FLAGS.GUILD_MEMBERS] });
client.login('token');
var server = client.guilds.cache.get('server');
client.on('ready', ready);
function ready()
{
console.log('Authenticated');
server = client.guilds.cache.get('server');
}
client.on('messageCreate', receivedMessage);
function receivedMessage(msg)
{
commandHandler(msg);
}
client.on('guildMemberAdd', joinMessage);
function joinMessage(member)
{
let channelWelcome = server.channels.cache.get('welcome');
let channelIntro = server.channels.cache.get('intro');
channelWelcome.send(`Welcome to the server, ${member}! Head over to ${channelIntro} and introduce yourself!`);
}
client.on('guildMemberRemove', leaveMessage);
function leaveMessage(member)
{
let channelWelcome = server.channels.cache.get('welcome');
channelWelcome.send(`${member} has left the server.`);
}
我已经尝试解决这个问题大约一个小时了,所以如果有人能帮助我解决这个问题,我将非常感激。谢谢!
您需要包含以下意图:GUILD_PRESENCES
所以你的代码需要如下所示:
const client = new Discord.Client({ intents: [Intents.FLAGS.GUILD_PRESENCES, Intents.FLAGS.GUILDS, Intents.FLAGS.GUILD_MESSAGES, Intents.FLAGS.GUILD_MEMBERS] });
现在你的机器人将检测成员是否离开公会。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)