我正在尝试制作一个在发送消息时记录消息的机器人,但似乎不止一次发送消息,抱歉,如果这很乱,我是 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)
答案 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