如何让我的不和谐机器人回复提及?

时间:2021-04-22 10:13:55

标签: python discord.py

我希望我的不和谐机器人在有人提及时回复。例如,如果@someone 输入“Hello @bot”,我希望我的机器人回复“Hello @someone!”。

我尝试了几种方法: 1.

@client.event
async def on_message(message):
  if message.author == client.user:
    return
  if message.content == ("@bot"):
    await message.channel.send("Hello {}".format(message.author.mention) + "!")

甚至这个,

@client.event
    async def on_message(message):
      if message.author == client.user:
        return
      if message.content.startswith("@bot"):
        await message.channel.send("Hello {}".format(message.author.mention) + "!")

但这些都没有用。

那么如何让我的不和谐机器人回复提及?

1 个答案:

答案 0 :(得分:3)

Discord 提及不是这样处理的,它们的内部格式如下所示:

<@{id_here}>  - Normal mention
<@!{id_here}> - Nick mention
<@&{id_here}> - Role mention
<#{id_here}>  - Channel mention

你可以做一个简单的正则表达式:

import re

@client.event
async def on_message(message):
    if message.author == client.user:
        return
  
    pattern = re.compile(f"hello <@!?{client.user.id}>") # The exclamation mark is optional

    if pattern.match(message.content.lower()) is not None: # Checking whether the message matches our pattern
        await message.channel.send(f"Hello {message.author.mention}!")