当字符串中包含剪切服务器表情符号时,我如何才能让我的机器人做出响应?
我的代码目前如下所示:
if message.content.startswith(":emoji: Hello"):
await client.get_channel(123456789).send("Hello to you, too!")
如果我在 Discord 中发布表情符号和句子,该命令将不会触发。我需要改变什么?
最佳答案
使用自定义表情符号时,它有一个唯一的 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()
这使得命令不区分大小写,因此无论用户键入 HelLo
都会起作用。 , HELLO
或hElLo
引用文献:
-
Guild.emojis
-
str(emoji)
-
utils.get()
- 您也可以使用Guild.fetch_emoji()
,但这需要您事先知道 ID。
关于python - 如何让 Discord 机器人在 on_message 中使用自定义表情符号响应消息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62202435/