【发布时间】:2020-11-06 11:13:23
【问题描述】:
我正在创建 Discord 机器人,当用户在消息上添加特定的表情符号反应时,它会赋予特定的角色。
我想让用户只选择一种反应;
或
如果用户选择另一个,同一用户的其他反应应该被删除。
我只找到了两种情况的代码:
- 删除消息上的所有表情符号反应。
message.reactions.cache.get('emojiId').remove()
- 删除用户的反应。
const userReactions = message.reactions.cache.filter(reaction => reaction.users.cache.has(userId));
try {
for (const reaction of userReactions.values()) {
await reaction.users.remove(userId);
}
} catch (error) {
console.error('Failed to remove reactions.');
}
它们都不适合我,因为它们会删除对消息的所有反应。
我的代码的一部分:
client.on('messageReactionAdd', async (reaction, user) => {
if(reaction.partial) await reaction.fetch()
const { message } = reaction
if (message.id === rulesMessageId) {
const member = message.channel.guild.members.cache.get(user.id)
if (reaction.emoji.id === emojiIds.HEAVEN ) {
for (var i = 0 in guildRoles) {
if (guildRoles[i] != guildRoles.HEAVEN)
member.roles.remove(guildRoles[i])
}
member.roles.add(guildRoles.HEAVEN)
}
【问题讨论】:
-
如果您没有找到适合您的确切用例的代码,也许是时候自己编写一些代码了。
标签: node.js discord bots discord.js