#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).