Discord.js 机器人离开公会
Posted
技术标签:
【中文标题】Discord.js 机器人离开公会【英文标题】:Discord.js bot leave guild 【发布时间】:2018-07-28 09:13:26 【问题描述】:如何让我的机器人离开公会? 我试过这个:
case `leave`:
if(message.author.id !=='196701848239865866')
return message.channel.send(`**»** $message.author, you don't have permission to do that!`);
var guildID = bot.guild.find()
guildID.leave()
break;
【问题讨论】:
我真的不知道代码应该做什么。但是,粗略地看一下,我可以看到一些错误。公会id可以通过message.guild.id获取 【参考方案1】:你不能通过公会ID运行.leave()
来离开公会。我建议做message.guild.leave();
离开公会。如果您需要公会 ID,可以通过 message.guild.id
从消息中获取。
要详细说明您的代码不工作的原因,您做错了几件事。
bot.guild
不存在,因此bot.guild.find()
也不起作用。机器人被设计为存在于多个公会中,因此它们存储在Collection 中,您可以通过bot.guilds.find("id", guildId);
搜索它们。此外,一旦你获得了“id”,它就会以Snowflake 的形式返回,因此它没有任何方法,你不能从中运行.leave();
。
【讨论】:
【参考方案2】:在 discord.js v12 中你必须使用
bot.guilds.cache.get(id).leave()
.catch(err =>
console.log(`there was an error leaving the guild: \n $err.message`);
我认为这就是它的工作原理!如果您有任何问题,请随时 hmu!
【讨论】:
【参考方案3】:要添加到 Splinxyy 的答案,而不是 bot.guild.find();
(因为它不存在)尝试 message.guild
。
【讨论】:
【参考方案4】:就像他们上面所说的,message.guild.leave()
将离开发送消息的当前服务器。但是,您也可以对 forEach 算法使用类似的方法。这是一个示例:bot.guilds.cache.forEach(guild => guild.leave())
这将留下您的机器人所在的 ALL 服务器。如果您想为您的机器人留下一个特定的服务器,您可以使用如下内容:bot.guild.leave(server id here)
【讨论】:
【参考方案5】:通过查看您的代码,我会说,这样做:
case `leave`:
if(message.author.id !=='196701848239865866')
return message.channel.send(`**»** $message.author, you don't have permission to do that!`);
var guildID = bot.guilds.cache.get(args[0]) //your argument would be the server id
guildID.leave()
break;
如果您想让它离开消息来源的服务器,请执行以下操作:
if(message.author.id !=='196701848239865866')
return message.channel.send(`**»** $message.author, you don't have permission to do that!`);
message.guild.leave()
希望这会有所帮助。
【讨论】:
以上是关于Discord.js 机器人离开公会的主要内容,如果未能解决你的问题,请参考以下文章