我希望我的discordbot发送发送带有附件和文本的消息。然后,机器人必须编辑此文本几次,但问题是,当机器人eddits消息5次后,它会等待一段时间,然后再次编辑5次,依此类推。如何使它编辑消息而不停止?
if(msg.content.includes("letter")){
msg.channel.send("alphabet", { files: ["/Users/48602/Videos/discordbot/aaa.png"]})}
if(msg.content === 'alphabet'){
msg.edit("**a**")
msg.edit("**b**")
msg.edit("**c**")
msg.edit("**d**") // Here bot stop for a 2 seconds and i dont know why
msg.edit("**e**")
msg.edit("**f**")
msg.edit("**g**")
msg.edit("**h**")
msg.edit("**i**")
msg.edit("**j**")// Here bot stop for a 2 seconds and i dont know why
msg.edit("**k**")
msg.edit("**l**")
msg.edit("**m**")
msg.edit("**n**")
msg.edit("**o**") // Here bot stop for a 2 seconds and i dont know why
msg.delete()
}
答案 0 :(得分:0)
Discord有一个rate limit of 5 in each request。尝试绕过此操作将被视为API滥用(以后的解决方案不是API滥用)。
超过此限制将暂停其他请求,直到经过一定秒数为止。在研究过程中,我遇到了以下simple explanation:
5 anything per 5 seconds per server
(如果您不明白我上面所说的话)。
在Discord's Developer guide on rate limits上,它告诉您:
关于共享相同速率限制的不同HTTP方法的上述规则[速率限制]当前只有一个例外,那就是删除消息。删除邮件受到单独的更高速率限制,因此漫游器可以更快地从频道中删除内容(这对于审核漫游器很有用)。
在不滥用API的情况下,一种解决方法是发送消息并删除以前的消息,因为删除消息的上限更高。
另一种解决方法是向动画添加中间超时。 一个简单的方法,例如:
function async wait = { require("util").promisify(setTimeout); };
//syntax: await wait(1000); to "pause" for 1 second
您将需要按照时机进行操作,以使其符合您预期的动画速度,并且不会因速率限制而暂停。