我希望我的不和谐机器人在有人提及时回复。例如,如果@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) + "!")
但这些都没有用。
那么如何让我的不和谐机器人回复提及?
答案 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}!")