【问题标题】:How to Have a Discord Bot Select a Channel如何让 Discord Bot 选择频道
【发布时间】:2020-03-12 22:00:30
【问题描述】:

好的,所以我想知道是否有人知道我将如何让机器人选择频道。我正在为不和谐创建一个多服务器机器人,并且想知道如何使用命令选择角色/频道。例如,我有这个自动角色成员的代码:

client.on("guildMemberAdd", member => {

    //Change "RoleName" tto the role yoou want to give them
    var role = member.guild.roles.find ("name", "RoleName")
    member.addRole (role)
        if (role = null)
        return;
})

现在,显然不是每个服务器都将其成员角色设置为“RoleName”,所以我想知道的是,我如何让机器人通过命令选择他们希望赋予新成员的角色。因此,如果他们要这样做:“cb!auto​​role set Member”,它将使该角色成为他们自动赋予新成员的角色,但如果其他服务器中的某人执行“cb!auto​​role set Newbie”,它将使服务器自动角色,无需更改或添加不同的服务器自动角色。

频道也是如此。示例:“cb!welcome set #welcome”它会设置服务器欢迎消息频道,而不更改或添加不同的服务器选择频道。

我也想知道如何取消设置它们。示例:“cb!unset welcome”和“cb!unset autorole”,当然它只会取消设置该服务器的内容。

如果解释太长但你知道链接,请与我分享。

如果这令人困惑,如果您对我的意思有任何疑问,我很抱歉,请发表评论。我是编码新手,所以我可能弄错了一些术语。

感谢您抽出宝贵时间阅读本文。

【问题讨论】:

    标签: javascript node.js discord discord.js


    【解决方案1】:

    你应该使用数据库来设置频道(例如频道id/角色id)然后你可以这样做:

    var chan = member.guild.channels.get(channelid).catch(console.error);
    if(chan) chan.send(`welcome ${member} to the server`);
    
    var role = member.guild.roles.get(roleid).catch(console.error);
    if(role) member.addRole(role);
    

    如果您对数据库不是很熟悉,我建议您使用quick.db。然后就可以了

    const db = require("quick.db");
    client.on("message", message => {
        const args = message.content.slice(prefix.length).trim().split(/ +/g);
        const command = args.shift().toLowerCase();
        if(command == "setautorole"){
            let roleName = args.slice(0).join(" ");
            let role = message.guild.roles.find(role => role.name == roleName).catch(message.reply("Couldn't find that role")
            db.set(`autorole_${message.guild.id}`, role.id)
        }
        if(command == "unsetautorole"){
            db.delete(`autorole_${message.guild.id})
        }
        if(command == "setwelcomechannel"){
            let channelName = args.slice(0).join(" ");
            let channel = message.guild.channels.find(channel => channel.name == channelName).catch(message.reply("Couldn't find that channel")
            db.set(`welcomechannel_${message.guild.id}`, channel.id)
        }
        if(command == "unsetwelcomechannel"){
            db.delete(`welcomechannel_${message.guild.id})
        }
    })
    client.on("guildMemberAdd", member => {
        let roleId = db.get(`autorole_${member.guild.id}`);
        if(roleId) member.addRole(roleId).catch(console.error);
        let channelId = db.get(`welcomechannel_${member.guild.id}`);
        if(channelId) channel = member.guild.channels.get(channelId).catch(console.error);
        if(channel) channel.send("x")
    })
    
    

    设置角色 设置欢迎频道

    当然,您可以修改它以使用其他方式保存它。

    【讨论】:

    • 好的,谢谢,我会测试一下。你知道我可以使用任何教程链接来教我如何使用 quick.db 做我想做的事情吗?
    • npm page 应该提供足够的信息,或者只是 a google search 提供足够的教程
    • 顺便说一句,我刚输入第二行代码,就遇到了很多错误。都是',' expected
    • 哦,很抱歉没有回复,但是在捕获后缺少) 希望您已经找到它xd
    猜你喜欢
    • 2020-07-14
    • 2019-05-17
    • 2019-05-05
    • 2020-11-28
    • 1970-01-01
    • 1970-01-01
    • 2020-07-13
    • 2020-11-04
    • 2021-07-20
    相关资源
    最近更新 更多