如何让 Discord 机器人在 on_message 中使用自定义表情符号响应消息

Posted

技术标签:

【中文标题】如何让 Discord 机器人在 on_message 中使用自定义表情符号响应消息【英文标题】:How do I make a Discord bot respond to a message with a custom emoji in on_message 【发布时间】:2020-09-23 21:33:46 【问题描述】:

当 cuttom 服务器表情符号在字符串中时,我如何让我的机器人做出响应? 我的代码目前如下所示:

if message.content.startswith(":emoji: Hello"):
      await client.get_channel(123456789).send("Hello to you, too!")

如果我在 Discord 中发布表情符号和句子,则不会触发该命令。我需要改变什么?

【问题讨论】:

【参考方案1】:

使用自定义表情符号时,它有一个唯一的 ID,这就是显示在消息内容中的内容,而不仅仅是表情符号的名称。您可以通过几种不同的方式访问它,但最简单的可能是\:emoji:,您可以在这里看到它的工作原理:


最后一部分是消息内容将包含的内容。所以在我的例子中,正确的陈述应该是这样的:

if message.content.lower().startswith("<:statue:709925980029845565> hello"):
    await message.channel.send("Hello to you too!") # sends to the same channel the message came from

您也可以在不使用其 ID 的情况下检索表情符号:

emoji = discord.utils.get(message.guild.emojis, name="statue")
if message.content.lower().startswith(f"emoji hello"):
    await message.channel.send("Hello to you too!")

请注意,我还使用了.lower(),它使命令不区分大小写,因此无论用户键入HelLoHELLO 还是hElLo,它都可以工作


参考资料:

Guild.emojis str(emoji) utils.get() - 您也可以使用 Guild.fetch_emoji(),但这需要您事先知道 ID。

【讨论】:

以上是关于如何让 Discord 机器人在 on_message 中使用自定义表情符号响应消息的主要内容,如果未能解决你的问题,请参考以下文章

如何让 DIScord.js 机器人真正回复消息?

如何让机器人在 discord.py 重写中为频道设置慢速模式?

你如何让 Discord 机器人响应 DM 中的命令? (Python)

(Discord.py)如何让机器人在一段时间后删除自己的消息?

我如何让我的机器人在 .JSON 文件 discord.js 中写入多行 [重复]

如何让我的 Discord 机器人向聊天室发送消息 [重复]