在单独的频道中对机器人自己的消息的表情符号反应

Posted

技术标签:

【中文标题】在单独的频道中对机器人自己的消息的表情符号反应【英文标题】:Emoji reactions on bot's own message in separate channel 【发布时间】:2021-07-11 08:03:21 【问题描述】:

我正在 Discord.js 中开发一个机器人。 它应该侦听正在使用的命令,使用命令删除消息,并在单独的频道中发布命令消息的参数。

例如,如果我发送了机器人-say Stack Overflow is a good place to get help,它将在频道#said-and-repeated 中发布“Stack Overflow 是获得帮助的好地方”。问题是它需要对两个表情符号做出反应,以便用户可以投票决定它是否是一个好的提示。


代码:

var textToEcho = args.join(" ");
        if(args.length === 0)
            message.reply('you need to add a `message` to use this command!!');
         else 
            message.delete();
            Client.channels.cache.get('where it will send the message').send(textToEcho).then(message => 
                message.react("emoji");
                message.react("emoji");
            
        

但这不起作用,我看不出它有什么问题。我知道自定义表情符号的编写方式需要稍有不同,但机器人只对两个默认表情符号做出反应:支票和十字。

【问题讨论】:

我仍然无法理解问题所在。它对自定义表情符号没有反应吗?请说明错误。 你有实际的 unicode 表情符号而不是 emoji 表情符号是 unicode,但这无关紧要,我知道如果它是自定义的,我需要使用 ID @PerplexingParadox 【参考方案1】:

在 Discord.js 中做出反应与发送表情符号完全不同。

使用本地表情符号做出反应:-

message.react("?")

// Don't use emoji name, use emoji symbol instead.

使用自定义表情符号做出反应:-

message.react("emojiID here")

您也说过,您想对机器人的消息做出反应。所以这件事是正确的,但是,您指示对用户的消息做出反应,即*message*.react

这里你需要的是,这个:-

//We declare that botMessage is bot's message send to channel

 let botMessage = await Client.channels.cache.get('where it will send the message').send(textToEcho).then

   // We react here...
  await botMessage.react('emojiID or symbol');
  await botMessage.react('emojiID or symbol');



如果您需要任何其他帮助,请在评论中告诉我并联系我。

【讨论】:

谢谢,这不是预期的确切结果,但多亏了 await 函数,我才得以解决 欢迎您!如果你能告诉我究竟是什么解决了你的问题,这样我就可以为有同样问题的人更新我的答案。 await 函数对我有用,正如前两个只是显示如何添加反应,而不关心它是什么消息。我需要它来等待然后发送对机器人本身发送的消息的反应,所以最后一个起作用了。 哦,我曾经遇到过同样的问题,不得不爬取整个网络来解决同样的问题哈哈。

以上是关于在单独的频道中对机器人自己的消息的表情符号反应的主要内容,如果未能解决你的问题,请参考以下文章

如何让不和谐机器人使用 discord.py 向消息添加表情符号反应?

机器人对表情符号做出反应

收到表情符号反应后的 Discord.js 消息

Discord bot 添加对消息 discord.py 的反应(无自定义表情符号)

您如何让机器人使用自定义表情符号添加反应?

如何从消息中获取表情符号?