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 机器人离开公会的主要内容,如果未能解决你的问题,请参考以下文章

Discord.js - 公会 ID 未定义,即使有定义

Discord.js 无法从公会中找到角色

Discord.js 如何感知公会成员何时更改活动

Discord.js 让所有成员陷入公会问题

如何删除公会 discord.js 中的所有频道

如何在 discord.js v12 中列出所有公会成员