Почему мой код, похоже, останавливается на Interaction.editReply() ?

#javascript #discord #discord.js

#javascript #Discord #discord.js

Вопрос:

Я создавал игровую команду в discord.js , но при попытке editReply сделать это, это не пройдет мимо этого… Я попытался поместить журналы консоли до и после, и один после не запускался. Я попытался использовать await interaction.deferReply() , и это просто осталось BotName is thinking... . Аргументы переданы правильно, и ошибок нет.

Вот код:

 async execute(client, interaction, args) {
    await interaction.reply(`valid string here`) // does send
    let num = Math.floor((Math.random() * (args[0] || 1000))   1); //get random number
    let guesses = 0;
    let logs = ["None"];
    console.log("Running 1") // logs
    await interaction.editReply(
      `valid string here`
    )
    console.log("Running 2") // doesn't log and doesn't edit
    // ...
}
 

После использования client.on("debug") and client.on("warn") , кажется, я получаю 429, но я даже не зацикливаюсь, и вчера все работало просто отлично

 Hit a 429 while executing a request.
    Global  : false
    Method  : patch
    Path    : /webhooks/---/messages/@original
    Route   : /webhooks/:id/---/messages/@original
    Limit   : Infinity
    Timeout : 500ms
    Sublimit: 1130000ms
 

Комментарии:

1. Я поместил точный код, который вы предоставили, в своего бота, протестировал его, и он отлично работает. Оба журнала отправляются, и редактирование работает отлично. Я не уверен, что вызывает у вас эту проблему. Вы уверены, что это не вызвано какой-то другой простой ошибкой, например, не сохранением файла?

2. Ну, это на replit, может быть, в этом проблема?

3. Возможно, в этом проблема. Я знаю, что в прошлом, при работе с Java на replit, иногда экономия становилась шаткой. Я бы внес очень простые изменения в код (например, добавил a System.out.println("hello world") ), которые должны работать идеально, но при запуске repl он будет действовать так, как будто я никогда не вносил этих изменений. После обновления страницы несколько раз добавленные изменения исчезнут, как если бы они не были сохранены. Это, безусловно, вызвало у меня массу путаницы при попытке отладки кода на replit. Возможно, это проблема, с которой вы столкнулись? Если нет, я не уверен, что это такое.

4. Странно… все мои .editReply s больше не работают… Я использовал команду, которая работала вчера, которая редактирует ответ, но это не так

5. Регистрация метода дает правильное значение

Ответ №1:

Ваше новое редактирование вопроса, скорее всего, отвечает на ваш вопрос. Если вы размещаете бота на replit (особенно на бесплатном хостинге), вполне вероятно, что ваш бот будет делиться IP-адресом с другими ботами, размещенными на replit. Ограничения скорости Discord применяются на основе IP-адреса, который запрашивает API. Все, что требуется для возникновения этой ошибки, — это чтобы кто-то другой в replit (чей бот случайно использует тот же IP, что и ваш) создал плохо / злонамеренно разработанного бота discord, который рассылает спам API и ограничивает скорость IP вашего бота. В этом случае я предполагаю, что кто-то использовал .editReply() слишком много в плохо спроектированном цикле или тому подобном.

Что касается решения этой проблемы, я нашел это сообщение replit . Это предполагает, что вы можете «запустить kill 1 на вкладке оболочки, чтобы уничтожить текущий контейнер и переключиться на новый». Это сообщение от 10 месяцев назад, поэтому оно может работать или не работать сейчас. (Если это не сработает, альтернативным решением также может быть создание собственного repl, а затем удаление оригинала. Это также может переключить вашего бота на новый IP).