好吧,我想知道是否有人知道我该如何让机器人选择频道。我正在为discord创建一个多服务器bot,我想知道如何使用命令选择角色/通道。例如,我有一段代码可以自动为成员分配角色:
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”,所以我想知道的是,如何让bot选择希望通过命令赋予新成员的角色。因此,如果他们这样做:“cb!autorole set Member”,则该角色将成为他们自动赋予新成员的角色,但如果其他服务器中的某个人执行“cb!autorole set Newbie”,则该角色将成为服务器自动角色,而无需更改或添加其他服务器自动角色。
频道也是如此。示例:“cb!welcome set#welcome”将设置服务器欢迎消息通道,而不更改或添加其他服务器选择的通道。
我也想知道如何解除它们。示例:“cb!unset欢迎”和“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);
如果你对数据库不是很有经验,我建议你快点。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")
})
setautorole setwelcomechannel
当然,您可以修改它以使用另一种方式保存它。
我正在努力让我的机器人进入语音频道,我已经阅读了这里的很多帖子,但没有一篇能够解决我的问题,我正在尝试让我的机器人复制yt视频的声音,但它甚至没有加入,我不知道该怎么办,下面是代码:
我希望我的不和谐机器人加入语音频道。但是我遇到了一个问题,每当我想让它加入风投时,什么都不会发生——甚至没有错误。我尝试过SO/Git的其他解决方案,但没有一个适合我(下面有一个)。 编辑:解决了!问题是:没有不和。已安装py[语音]模块。解决方案:
我希望我的Discord机器人在成员加入频道时向他们致意。我一直找不到在这种情况下触发的事件。我试过我的客户。UserJoined=MyMethod 谢谢,如果我能提供更多的信息,请告诉我。 编辑:建议的链接实现了用户加入事件,该事件似乎仅在新成员加入频道时触发。我需要每次有人登录频道时触发的东西,即使是现有成员。
我正在尝试让我的discord机器人连接到一个语音频道,目前如下所示: 基本上,当他们发送消息时,我希望它加入消息作者的语音频道“-skip”,然后我的机器人加入,在聊天中说-p scotland forever,然后离开。我收到一条错误消息,说“频道”未定义或“连接”未定义,我尝试了几种不同的方法,我想我只是没有导入插件或其他东西,这可能是我的问题,但我知道应该使用什么插件。任何帮助都将不胜感激
我是一个编程新手。几天前,我开始开发我的第一个discord机器人,你知道,让我和我的朋友一起玩。现在,让我们假设我想让这个机器人检测消息中的单词,并在每次有人提到该单词时回复,无论消息的哪个部分。我能做到,但现在有个问题。假设我要找的单词是“你好”。如果有人说“哦,你好”,“你好”,一条写着“你好”的消息,机器人会回复“你好”。但是机器人也会在自己的消息中检测到hello,并一遍又一遍地回复自己
我找不到解决办法,所以我来了。我制造了一个不和谐的机器人。py rewrite为我的discord服务器编写,我想实现一个功能,当用户加入语音频道时,我的机器人会说些什么。 我甚至不能让机器人加入语音聊天,因为它会给出所有可能的错误。提前谢谢。 这就是我所尝试的: 还有这个 他们都给出了这个错误