问题描述
我想使用机器人通过discord.js f对通道中的每条消息做出反应.我有一个表情符号竞赛频道,我想在其中的每个帖子上添加一个✅和一个✖反应ofc,清除了所有不必要的消息,以便有50条消息
I wanna use an bot to react to every single message in an channel using discord.js f.e. i got an emoji contest channel and i wanna ad an ✅ and an ✖ reaction on every post in thereofc, all the unnecesary messages are cleaned up so that there are like 50 messages
推荐答案
- 使用获取在频道中已发送的消息
TextChannel.fetchMessages()
. - 遍历收藏.
- 使用
Message.react添加反应()
. - 在频道中发送新消息时,您还应该添加反应.
const emojiChannelID = 'ChannelIDHere';
client.on('ready', async () => {
try {
const channel = client.channels.get(emojiChannelID);
if (!channel) return console.error('Invalid ID or missing channel.');
const messages = await channel.fetchMessages({ limit: 100 });
for (const [id, message] of messages) {
await message.react('✅');
await message.react('✖');
}
} catch(err) {
console.error(err);
}
});
client.on('message', async message => {
if (message.channel.id === emojiChannelID) {
try {
await message.react('✅');
await message.react('✖');
} catch(err) {
console.error(err);
}
}
});
在此代码中,您会注意到我正在使用 for ... of
循环,而不是 Map.forEach()
.其背后的原因是后者将简单地调用方法并继续前进.这将导致任何被拒绝的诺言 not 被捕获.我还使用了 async/ await
样式,而不是容易弄乱的 then()
链.
In this code, you'll notice I'm using a for...of
loop rather than Map.forEach()
. The reasoning behind this is that the latter will simply call the methods and move on. This would cause any rejected promises not to be caught. I've also used async/await
style rather than then()
chains which could easily get messy.
这篇关于有没有办法对使用discord.js发送过的每条消息做出反应的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!