提问者:小点点

如何防止用户在一个通道中发送多个消息?


User 1: Hello!
User 1: How are you?
User 2: I'm good.
User 2: hbu
User 3: hey guys!
User 1: i'm doing fine

我正在尝试删除来自用户1和用户2的第二条消息,这样任何用户都只能发送一条消息。 我被告知使用channel.history,但我想不出一种方法来比较消息的作者,以确保他们不是同一个人。

这就是我想要的:我想防止双重张贴:

User 1: Hello! How are you?
User 2: I'm good, hbu.
User 3: hey guys!
User 1: i'm doing fine

我只是不知道如何使用channel.history来执行此操作。


共1个答案

匿名用户

您可以使用on_message()事件,并为此将通道历史记录的限制设置为1:

@bot.event
async def on_message(message):
    recent_author = (await message.channel.history(limit=1).flatten())[0].author
    if message.author == recent_author:
        await message.delete()

除非另有指定,否则history()coroutine首先获取最新消息,因此您可以将获取最新消息的限制设置为1。

参考资料:

  • Messageable.history()
  • message.author
  • message.delete()