如何让 Discord Bot 选择频道
Posted
技术标签:
【中文标题】如何让 Discord Bot 选择频道【英文标题】:How to Have a Discord Bot Select a Channel 【发布时间】: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!autorole set Member”,它将使该角色成为他们自动赋予新成员的角色,但如果其他服务器中的某人执行“cb!autorole set Newbie”,它将使服务器自动角色,无需更改或添加不同的服务器自动角色。
频道也是如此。示例:“cb!welcome set #welcome”它会设置服务器欢迎消息频道,而不更改或添加不同的服务器选择频道。
我也想知道如何取消设置它们。示例:“cb!unset welcome”和“cb!unset autorole”,当然它只会取消设置该服务器的内容。
如果解释太长但你知道链接,请与我分享。
如果这令人困惑,如果您对我的意思有任何疑问,我很抱歉,请发表评论。我是编码新手,所以我可能弄错了一些术语。
感谢您抽出宝贵时间阅读本文。
【问题讨论】:
【参考方案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以上是关于如何让 Discord Bot 选择频道的主要内容,如果未能解决你的问题,请参考以下文章
Discord BOT with Python,如何让它在我们发送命令的频道中回复(完成)