Создание al oop с помощью DSharpPlus - PullRequest
0 голосов
/ 07 мая 2020

Я пытаюсь создать команду с DSharpPlus, которая будет отправлять несколько сообщений с течением времени. Однако l oop просто останавливается после отправки 5 сообщений. Чтобы проверить тот факт, что это не была ошибка в моем коде (по крайней мере, очевидная), я создал еще один чрезвычайно простой l oop, и снова он достиг максимального значения 5. Я использовал следующий тест:

        [Command("test")]
        public async Task Test(CommandContext ctx)
        {
            for(int i = 0; i < 50; i++)
            {
                await ctx.RespondAsync(i.ToString());
            }
        }

Итак, если бы это было сделано правильно, бот отправлял бы сообщение для каждого целого числа до достижения 50. Однако он останавливается после целого числа 4. Как я могу это исправить?

1 Ответ

3 голосов
/ 07 мая 2020

В Discord действует такая система, которая называется «Ограничения скорости». Они не дают вам перегрузить сервер слишком большим количеством запросов (вы получите ошибку HTTP 429, слишком много запросов).

Чтобы предотвратить это, DSharpPlus имеет систему с очередью, которая учитывает Заголовки ограничения скорости в Discord, чтобы эти сообщения все равно отправлялись.

Кроме того, я рекомендую не отправлять слишком много таких сообщений. Чтобы предотвратить эти ошибки ограничения скорости, я рекомендую вместо этого отправлять как можно больше данных в одном сообщении, а не разделять его на 50 сообщений, отправляемых в быстрой последовательности.

Надеюсь, это ответит на ваш вопрос.

Это в сторону, спасибо за использование DSharpPlus :)

...