使用不和谐机器人重新排序消息

时间:2021-02-03 14:31:57

标签: discord.py

我正在编写一个机器人,我想研究如何有效地重新排序旧消息。

例如

频道上的消息序列,其中只有机器人发布或向机器人发出命令

Bot: "1"
Bot: "2"
Bot: "3"
Bot: "4"
Bot: "5"

然后用户使用命令$cycle

我希望频道上的消息然后阅读

Bot: "2"
Bot: "3"
Bot: "4"
Bot: "5"
Bot: "1"

[我没有在 aove 片段中编写用户命令,因为您可以用它做一些事情 - 但我最感兴趣的是我们正在用机器人消息序列做什么]

我可以看到几种方法来做到这一点,但由于 limits 发布编辑消息的速度不一致,我不确定哪种方法最有效。

机器人可以编辑每条消息 - 但这会达到他们的速度限制。或者可以再次发送消息 - 但这也会达到他们的速度限制。理想情况下,最好编辑放置它们的顺序,但 API 似乎不允许这样做。

这是一个 bot 命令,您可以使用它来生成与上述类似的消息序列。

@bot.command(name='repeat', help='type a sequence of words seperated by spaces and they will be repeated back to you as a sequence of messages')
async def repeat(ctx, *lines):
    print("repeating")
    await asyncio.gather(*[ctx.send(line) for line in lines])

这是我尝试发出循环命令

@bot.command(name='cycle', help='help me to understand bots')
async def cycle(ctx):
    #prepare to read in the most recent sequence of messages from the bot
    message     = ctx.message
    channel     =message.channel
    messages    = []
    #read them in
    async for other_message in channel.history(before=message, limit=1000):
        messages.append(other_message)
        if other_message.author.name!= bot.user.name: 
            break
    #missing code

以上内容会读入消息,以便您可以将它们编辑为新顺序、以新顺序重新发送它们或执行其他操作。循环命令的最快实现是什么?

0 个答案:

没有答案