在我对自己发送的图像中的表情符号做出反应后,如何让不和谐的机器人做某事
How to make a discord bot do something after I react to an emoji in an image sent by itself
我正在制作我的第一个 discord 机器人,我试图让它在我对它的一个表情符号做出反应后发送消息,问题是,当我点击竖起大拇指的表情符号时,机器人根本不发送消息,现在已经几个小时了,我找不到问题,很抱歉,如果这个问题已经在其他地方解决了,我找不到任何有用的东西。
if (command === "ping") {
const attachment = new MessageAttachment('https://cdn.mcr.ea.com/3/images/ac394369-2801-4e09-87eb-82ca54e26254/1588018258-0x0-0-0.jpg');
const sentMessage = await message.channel.send({files: [attachment] })
sentMessage.react('');
//sentMessage.react('');
const filter = (reaction, user) => {
return reaction.emoji.name === '' && user.id === message.author.id;
};
const collector = sentMessage.createReactionCollector(filter, { time: 15000 });
collector.on('collect', (reaction, user) => {
message.channel.send(`Collected ${reaction.emoji.name} from ${user.tag}`);
});
collector.on('end', collected => {
message.channel.send(`Collected ${collected.size} items`);
console.log(`Collected ${collected.size} items`);
});
编辑
我发现我缺少 "GUILD_MESSAGE_REACTIONS"
意图,现在我有这 3 个 "GUILDS", "GUILD_MESSAGES", "GUILD_MESSAGE_REACTIONS"
,但仍然无法正常工作!
完整代码如下:
https://pastebin.com/Q0eZ6VSz
嗨,这段代码可以正常工作,除了一点小事...
sentMessage.createReactionCollector(filter, { time: 15000 });
将其更改为:
sentMessage.createReactionCollector({filter, time: 15000 });
我还建议您也添加 max: 1
选项。
所以最终代码:
...
sentMessage.createReactionCollector({filter, max: 1, time: 15000 });
在这种情况下只有你最先做出反应。
我正在制作我的第一个 discord 机器人,我试图让它在我对它的一个表情符号做出反应后发送消息,问题是,当我点击竖起大拇指的表情符号时,机器人根本不发送消息,现在已经几个小时了,我找不到问题,很抱歉,如果这个问题已经在其他地方解决了,我找不到任何有用的东西。
if (command === "ping") {
const attachment = new MessageAttachment('https://cdn.mcr.ea.com/3/images/ac394369-2801-4e09-87eb-82ca54e26254/1588018258-0x0-0-0.jpg');
const sentMessage = await message.channel.send({files: [attachment] })
sentMessage.react('');
//sentMessage.react('');
const filter = (reaction, user) => {
return reaction.emoji.name === '' && user.id === message.author.id;
};
const collector = sentMessage.createReactionCollector(filter, { time: 15000 });
collector.on('collect', (reaction, user) => {
message.channel.send(`Collected ${reaction.emoji.name} from ${user.tag}`);
});
collector.on('end', collected => {
message.channel.send(`Collected ${collected.size} items`);
console.log(`Collected ${collected.size} items`);
});
编辑
我发现我缺少 "GUILD_MESSAGE_REACTIONS"
意图,现在我有这 3 个 "GUILDS", "GUILD_MESSAGES", "GUILD_MESSAGE_REACTIONS"
,但仍然无法正常工作!
完整代码如下: https://pastebin.com/Q0eZ6VSz
嗨,这段代码可以正常工作,除了一点小事...
sentMessage.createReactionCollector(filter, { time: 15000 });
将其更改为:
sentMessage.createReactionCollector({filter, time: 15000 });
我还建议您也添加 max: 1
选项。
所以最终代码:
...
sentMessage.createReactionCollector({filter, max: 1, time: 15000 });
在这种情况下只有你最先做出反应。