【问题标题】:当 Discord 机器人加入公会时会触发什么事件?
【发布时间】:2018-05-11 09:50:43
【问题描述】:

我正在使用 Discord.js 创建一个基本的 Discord 机器人。当机器人第一次启动时,我运行client.guilds.array() 来获取机器人当前订阅的所有公会的列表。我将其保存到其他程序使用的数据库中。

但是,随着人们从他们的公会中添加/删除机器人,我想保留一个更新的公会列表。我意识到我可以每分钟重新运行一次clients.guilds.array(),但这似乎效率低下。

当您的机器人被添加到公会和/或频道时,是否会触发事件?从我读到的内容来看,guildMemberAdd 事件似乎会为所有已经订阅公会的用户/机器人触发。是否有任何此类事件可以让您的机器人知道它何时被添加到公会?

【问题讨论】:

    标签: discord discord.js


    【解决方案1】:

    是的,您可以在客户端事件https://discord.js.org/#/docs/main/stable/class/Client 中查看它。使用事件更新公会数组的简单示例:

    const discord = require("discord.js");
    const client = new discord.Client();
    
    let guildArray = client.guilds.array();
    
    //joined a server
    client.on("guildCreate", guild => {
        console.log("Joined a new guild: " + guild.name);
        //Your other stuff like adding to guildArray
    })
    
    //removed from a server
    client.on("guildDelete", guild => {
        console.log("Left a guild: " + guild.name);
        //remove from guildArray
    })
    

    【讨论】:

    • 谢谢!我很困惑。我认为这些事件仅发生在实际创建或删除新公会时,而不是仅添加/删除机器人时。
    • guildDelete 在什么条件下被解雇?如果机器人有连接问题,它会被解雇吗?还是只有当机器人被用户实际删除时?
    • 我有时会在某些公会中断时遇到这个问题,它会触发 guildDelete 事件,以避免我建议在该事件中运行任何东西之前先使用guild.available
    • @syntle guild.available 的文档在哪里?似乎找不到它,我试图通过在机器人被踢并且没有再次被邀请一个月后删除公会特定用户数据来减轻我的机器人拥有的单个 sqlite 文件
    猜你喜欢
    • 1970-01-01
    • 2020-12-02
    • 1970-01-01
    • 2021-05-12
    • 2019-05-26
    • 2011-05-23
    • 1970-01-01
    • 1970-01-01
    • 2011-03-21
    相关资源
    最近更新 更多