【问题标题】:Discord.js how to seach channel from clientDiscord.js如何从客户端搜索频道
【发布时间】:2020-06-25 04:13:01
【问题描述】:

我有一个名为 userUpdate.js 的 discord.js 事件,它的参数为 client,oldUser, newUser

我试过了

 var log = client.guilds.channels.find(ch => ch.name.includes('log')) ;
        if (!log) return;
        if (!log.permissionsFor(client.user).has(["SEND_MESSAGES","EMBED_LINKS"])) return;

但我得到的是频道没有定义

log.send("message here");

【问题讨论】:

    标签: node.js discord discord.js


    【解决方案1】:

    因为你尝试在公会集合中查找频道,所以你得到了未定义的。

    discord v11 版本

     let log = client.channels.find(ch => ch.name.includes('log')) ;
            if (!log) return;
            if (!log.permissionsFor(client.user).has(["SEND_MESSAGES","EMBED_LINKS"])) return;
    

    discord v12 版本

         let log = client.channels.cache.find(ch => ch.name.includes('log')) ;
            if (!log) return;
            if (!log.permissionsFor(client.user).has(["SEND_MESSAGES","EMBED_LINKS"])) return;
    

    最好使用频道 ID

        let logChannel = client.channels.get("ID")
        if (!logChannel) return;
        if (!logChannel.permissionsFor(client.user).has(["SEND_MESSAGES","EMBED_LINKS"])) return;
    

    对于 v12,将 client.channels.get("ID") 替换为 client.channels.cache.get("ID")

    【讨论】:

    • 问题是 idk 频道的 ID,所以我需要按名称多公会机器人查找频道
    • 因此您需要为此使用地图公会或过滤客户端频道,因为find 方法仅返回 1 个频道。
    • 如果它的生产机器人适用于许多服务器,includes('log') 可以是多个渠道,例如 login, catalog, blog
    • 是的,我删除了登录、博客和其他以减少代码,这一切都在我的机器人代码中是的,我需要过滤频道并一次只获取 1 个频道
    猜你喜欢
    • 2012-10-19
    • 1970-01-01
    • 2014-04-15
    • 2018-09-25
    • 1970-01-01
    • 2011-05-28
    • 1970-01-01
    • 1970-01-01
    • 2018-08-06
    相关资源
    最近更新 更多