#discord.js
#discord.js
Вопрос:
Я хочу, чтобы мой бот покинул сервер discord, используя ;leave <GuildID>
.
Приведенный ниже код не работает:
if (message.guild.id.size < 1)
return message.reply("You must supply a Guild ID");
if (!message.author.id == 740603220279164939)
return;
message.guild.leave()
.then(g => console.log(`I left ${g}`))
.catch(console.error);
Комментарии:
1. Какие ошибки вы получаете?
2. Хотя это не решит вашу проблему, я просто хотел упомянуть, что
!message.author.id == 740603220279164939
это всегда будет возвращатьсяfalse
при преобразованииmessage.author.id
в логическое значение с помощью!
оператора.
Ответ №1:
Скорее всего, вы не должны смотреть на message.guild.id
него, так как это возвращает идентификатор гильдии, в которую вы отправляете сообщение. Если вы хотите получить идентификатор гильдии ;leave (guild id)
, вам придется вырезать вторую часть , используя что — то вроде .split()
.
// When split, the result is [";leave", "guild-id"]. You can access the
// guild ID with [1] (the second item in the array).
var targetGuild = message.content.split(" ")[1];
!message.author.id
преобразует идентификатор автора (в данном случае ваш идентификатор бота) в логическое значение, которое приводит к false
(поскольку идентификатор установлен и не является ложным значением). Я предполагаю, что вы хотите запустить это, только если его автором не является сам бот, и в этом случае вы, скорее всего, стремитесь к этому:
// You're supposed to use strings for snowflakes. Don't use numbers.
if (message.author.id == "740603220279164939") return;
А теперь вам просто нужно использовать идентификатор гильдии, который вы получили из содержимого сообщения, и использовать его, чтобы покинуть гильдию. Чтобы сделать это, просто возьмите Guild
его из кэша вашего бота, а затем вызовите .leave()
. В целом, теперь ваш код должен выглядеть следующим образом:
// Get the guild ID
var targetGuild = message.content.split(" ")[1];
if (!targetGuild) // targetGuild is undefined if an ID was not supplied
return message.reply("You must supply a Guild ID");
if (message.author.id == "740603220279164939") // Don't listen to self.
return;
client.guilds.cache.get(targetGuild) // Grab the guild
.leave() // Leave
.then(g => console.log(`I left ${g}`)) // Give confirmation after leaving
.catch(console.error);
Комментарии:
1. Отлично, но когда я набираю;leave <идентификатор гильдии>, мой бот ничего не делает.. Ошибок в консоли тоже нет.. Я скопировал идентификатор гильдии, который я попробовал ввести, отправил;leave (id), И мой бот не ушел..
2. @Axmyo Уверен, что ваши проверки команд работают правильно? Я определенно уверен, что все вышесказанное работает. Попробуйте проверить, правильно ли вы маршрутизируете свои команды.
3. на самом деле это не работает, я не знаю почему.. Когда я указываю идентификатор гильдии, он ничего не делает ( imgur.com/a/hsFPFSL ), и бот остается в гильдии, которая «упомянута» в;leave ( imgur.com/a/5x8uoOF )
4. @Axmyo Я случайно сделал неверное предположение о вашем коде, поскольку в исходном вопросе не хватало контекста. Теперь я отредактировал свое решение. Попробуйте отредактированную версию сейчас и не стесняйтесь сообщать мне, если она все еще не работает.