我正在试着用我的机器人做右舷代码,其他一切都很好。但是我正在努力让机器人忽略实际消息作者的反应。
这是我当前的代码:
client.on('messageReactionAdd', (reaction_orig, message, user) => {
if (message.author.id === reaction_orig.users.id) return
manageBoard(reaction_orig)
})
它返回以下错误:
if (message.author.id === reaction_orig.users.id) return;
^
TypeError: Cannot read property 'id' of undefined
尝试这样做:
client.on('messageReactionAdd', (reaction, user) => {
if (!reaction.message.author.id === user.id){
//Do whatever you like with it
console.log(reaction.name)
}
});
注意:必须缓存消息。为此,你需要这样做
Client.channels.cache.get("ChannelID").messages.fetch("MessageID");
我猜你用的是V12discord.js
问题是messageReactionAdd
采用两个参数;消息反应是第一个,应用表情符号的用户是第二个。当您编写reaction\u orig,message,user
时,reaction\u orig
是反应(这是正确的),但message
是作为第二个参数做出反应的用户。用户
变量将是未定义的
。
另一个问题是reaction_orig.users
返回一个没有id
属性的ReactionUserManager。幸运的是,user
已经传递给您的回调,因此您可以使用它的ID。
此外,reaction_orig
有一个消息
属性,这个反应引用的原始消息,因此您可以从中获取其作者的ID。
您可以将代码更改为以下内容:
client.on('messageReactionAdd', (reaction_orig, user) => {
if (reaction_orig.message.author.id === user.id) {
// the reaction is coming from the same user who posted the message
return;
}
manageBoard(reaction_orig);
});
然而,上面的代码只适用于缓存的消息,这些消息是在机器人连接后发布的。对旧消息做出反应不会触发MessageReactionAdd
事件。如果您还想监听旧消息的反应,您需要在实例化客户端时为MESSAGE
,CHANNEL
和REACTION
启用部分结构,如下所示:
const client = new Discord.Client({
partials: ['MESSAGE', 'CHANNEL', 'REACTION'],
});
您可以检查消息是否缓存,例如检查其作者
属性是否为null
。如果为null
,则可以获取消息。现在,您同时拥有消息作者和做出反应的用户,因此您可以比较他们的ID:
// make sure it's an async function
client.on('messageReactionAdd', async (reaction_orig, user) => {
// fetch the message if it's not cached
const message = !reaction_orig.message.author
? await reaction_orig.message.fetch()
: reaction_orig.message;
if (message.author.id === user.id) {
// the reaction is coming from the same user who posted the message
return;
}
// the reaction is coming from a different user
manageBoard(reaction_orig);
});
我不知道为什么我的反应角色代码不起作用。如果有人能帮助我,我将不胜感激! message函数用于缓存消息,以便bot可以检测对该消息的反应,如果确实需要的话,Idk。 也没有错误,只是没有给我角色。
问题内容: 我想念一些东西。这是一个非常简单的问候世界,目标是仅触发警报事件onClick。该事件在页面加载时触发,但在单击按钮时不触发。感谢您的帮助。这是一个jsFiddle,使它更易于查看:jsFiddle 问题答案: 我认为您会犯错,因为ReactJS只是JavaScript,我认为触发此事件的方式不起作用。您的onClick应该触发一个附加到React元素的函数,就像这样。
我对javascript和discord非常陌生。js,有人能帮我,告诉我如何设置做出反应的用户的角色吗?我自己做这件事有困难。
我一直试图让我的机器人回复用户时,他们的反应机器人表情,但没有运气,我希望有人能帮助我在这里,我只是一个初学者与不和谐。js。 这是我的代码,我只是需要帮助,当用户做出反应时,机器人会发送一条消息回来。
问题内容: 我正在尝试使用Python中的pygame为应用程序制定简单的控件。我已经掌握了基础知识,但是碰到了奇怪的墙:我正在使用箭头键来控制角色。如果我按住一个箭头键,然后按住另一个箭头键(以对角线方向移动),则角色将按预期方式移动。但是,如果我释放了所按下的 第二个 键(同时仍然按住第 一个 键),即使我仍然按住 第一个 键,角色也会停止移动。这是我的简单运动代码: 现在,我自然对此感到非常
我希望将反应添加到消息中的机器人,而不是我。有人能帮我吗?