discord.py,来自 on_message 垃圾邮件 webhook 的内容

时间:2021-04-18 09:20:48

标签: python discord discord.py

我正在尝试制作一个在发送消息时记录消息的机器人,但似乎不止一次发送消息,抱歉,如果这很乱,我是 Python 新手

@client.event
async def on_message(message):
        async with aiohttp.ClientSession() as session:
            webhook = Webhook.from_url('my webhook url', adapter=AsyncWebhookAdapter(session))
            await webhook.send(message.content)

1 个答案:

答案 0 :(得分:0)

您的机器人可能正在阅读自己的消息。您可以检查消息的作者是否与您的机器人的用户相同。

@client.event
async def on_message(message):
    if message.author == client.user: # if message author and your bot are the same
        return # stops the on_message event

编辑:这是试图回答这篇文章的第一条评论。

方法 1:这可能不是最好的方法,但绝对是一个开始。您可以查看频道历史记录中的 most recent message's 内容,看看它是否与机器人相同。如果相同,则停止活动。

# first we get the most recent message in the channel
msg = await client.get_channel(CHANNEL_ID).history(limit=1).flatten()
msg = msg[0]

# then you check if the webhook message is the same as the most recent
if message.content == msg.content:
    return
else:
    await webhook.send(message.content)

方法 2:如果您在 webhook 上检查 message.author,您会发现鉴别器始终是 #0000

if str(message.author.discriminator) == "0000":
    return