Discord бот редактирует сообщения слишком медленно - PullRequest
0 голосов
/ 21 апреля 2019

Я хочу, чтобы мой дискорд-бот отправлял, отправлял сообщение с вложенным файлом и текстом.Затем бот должен отредактировать этот текст пару раз, но проблема в том, что когда бот редактирует сообщение 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()
      }

1 Ответ

0 голосов
/ 22 апреля 2019

Discord имеет ограничение скорости в каждом запросе .Попытка обойти это будет считаться злоупотреблением API (решение позже не является злоупотреблением API).

Превышение этого предела приведет к приостановке других запросов до истечения определенного количества секунд.Наряду с исследованиями я наткнулся на это простое объяснение : 5 anything per 5 seconds per server (если вы не поняли, что я сказал выше).

Вкл. Руководство разработчика Discord по ограничениям скорости , он говорит вам следующее:

В настоящее время существует единственное исключение из вышеуказанного правила [ограничения скорости], касающееся различных методов HTTP, использующих одинаковое ограничение скорости, и это касается удаления сообщений.Удаление сообщений попадает под отдельный, более высокий предел скорости, так что боты могут быстрее удалять контент из каналов (что полезно для модераторов).

Один обходной путь, без злоупотребления API, заключается вотправляйте сообщения и удаляйте предыдущие сообщения, поскольку существует более высокий предел для удаления сообщений.

Другим обходным решением может быть добавление промежуточных таймаутов к вашей анимации.Простой метод, такой как:

function async wait = { require("util").promisify(setTimeout); };
//syntax: await wait(1000); to "pause" for 1 second

Вам нужно будет поэкспериментировать с таймингами, чтобы они соответствовали предполагаемой скорости анимации, без остановки из-за ограничения скорости.

...