在我的机器人中,当提到机器人时,我有一个回复事件。问题是,当你通过回复它提到机器人时,它会回复。我怎样才能解决这个问题?这是我的代码:
@commands.Cog.listener()
async def on_message(self, msg):
guild = msg.guild
prefix = get_prefix(self.client, guild)
if msg.author == self.client.user:
return
if msg.mention_everyone:
return
if self.client.user.mentioned_in(msg):
embed = discord.Embed(description=f"The prefix for this server is `{prefix}` <:info:857962218150953000>", color=0x505050)
await msg.channel.send(embed=embed)
答案 0 :(得分:0)
改变
if self.client.user.mentioned_in(msg):
到
if msg.guild.me.mention in msg.content:
discord 消息在其消息中使用一个特殊字段来指定是否提及某人,如果消息在该字段中包含某人,则该消息将 ping 那个人。提到的_in 就是这样工作的,因此您可以确定某个消息是否在 ping 某个人。当我们使用 msg.guild.mention 部分时,我们手动检查提及而不是 discord 告诉我们是否有人被提及,因为 discord 将回复计为提及
答案 1 :(得分:0)
我已将以下代码用于类似的应用程序。
注意 - 将 client.user.id
中的 'client' 替换为您使用过的 bot.user.id
@client.event
async def on_message(message):
if message.content in [f'<@{client.user.id}', f'<@!{client.user.id}>']:
await message.channel.send("Hey! My prefix is ```,```")
await client.process_commands(message)