我正在尝试为服务器编写一个机器人程序,目前正在制作一个“静音”命令。我的想法是,当命令被调用时,bot必须首先检查这个人是否有允许他们使其他成员静音的角色,如果满足该条件,那么bot将接受第二个参数,即必须静音的成员的Discord id,并给他们一个禁止他们在服务器上讲话的角色。
由于某种原因,在测试代码时,我无法通过bot检查第二个参数是否是服务器成员的有效ID。
以下是静音
命令代码:
if (message.member.roles.cache.has('765334017011613717')) {
console.log('Oh oh');
const person = message.guild.member(
message.mentions.users.first() || message.guild.members.get(args[1])
);
if (!person) {
console.log('Oh oh 2');
}
} else message.channel.send('You do not have permission to use this command.');
注意:控制台。添加了log()
函数,以便在运行代码时查看问题发生的位置。
为了使这项工作顺利进行,你可以做两件事,第一件是更多的建议。
首先,理想情况下,您总是希望检查角色是否存在,如果不存在,则返回。这样可以避免您将整个逻辑用于在
if
语句中禁用该角色。你是这样做的:
if (!message.member.roles.cache.has('your role ID')) {
return message.channel.send('You do not have permission to use this command.');
}
代码中的实际问题源于查找成员的方式。正确的方法是检查成员的第一次提及,或者从第一个参数中获取提供的ID。第一个参数不是
args[1]
而是args[0]
。如果正在使用ID,则需要使用缓存
属性。来源
let muteMember = message.mentions.members.first() || message.guild.members.cache.get(args[0]);
然后,您应该检查是否确实找到了成员,如果没有,则返回。
if (!muteMember) {
return message.channel.send("That member doesn't exist!")
}
注意:您的代码中已经包含了这一点,但为了完整性,我想将其包括在内。
之后,您可以继续使用代码使某人静音。
我要离开一个网站(https://realpython.com/how-to-make-a-discord-bot-python/#how-to-make-a-discord-bot-in-python)和我下面的步骤,但我一直得到一个错误msg Traceback(最近一次调用最后一次): File"C:\用户\Bryce.Persello346\Desktop\bot.py",第15行,cli
我试图做一个程序来创建一个无尽的循环,例如: 但是主要的问题是一个机器人听不到另一个机器人的声音,所以这不起作用。。。 有没有办法让机器人听另一个机器人的?提前感谢!:)
当有人加入语音频道时,如何制作一个标记为@角色的discord机器人?示例:@role{user}已加入
所以每当我发送一个错误的命令,比如!pong(其中!ping是正确的)bot返回时出现以下错误: (if(command.permissions.length){^ 无法读取未定义的属性权限 即使我删除了整个权限代码,它也会给我一个 TypeError:无法读取未定义的属性“users” 只有当我对这一点掌握错误的时候!没有命令或命令时发出砰砰声!告诉我前缀不是实际命令的任何内容。下面是我使用的代
所以,我最近被告知,仅仅将不和谐机器人令牌存储在顶部的变量中是不好的做法,一个. env文件会更好。有人能向我解释一下如何创建带有令牌的. env文件,并将其导入到我的bot.py文件中吗?
没有显示activity_main.xml 我花了3个小时安装所有要求的东西,但我不知道如何修复这个错误。有人有什么建议吗?