如何使用Discord Bot选择频道



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

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"one_answers"cb;unset autorole",当然它只会取消设置服务器的内容。

如果它太长了,无法解释,但你知道一个链接,请与我分享。

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

感谢您花时间阅读本文。

您应该使用数据库来设置通道(例如通道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")
})

setautorolesetwelcomechannel

当然,你可以修改这个以使用另一种方式保存它

最新更新