这是我的不和谐机器人我正在工作最近,在我把所有的代码移到我的VPS后,reactionroles不再工作了。
因此,由于某种原因,每次单击emoij时,它不会向用户添加角色,我试了很多次,但没有成功。看来应该能行,我是不是漏掉了什么?当我启动机器人时,一切似乎都很好,甚至命令也起作用了。我没有在role.id中犯任何错误,因为我也尝试了role.name,并在其中输入了名称。这也没用,我希望你有足够的信息。
第一部分是index.js,第二部分是我使用的模块。
//This is the index.js
const Discord = require('discord.js');
const bot = new Discord.Client({partials: ["MESSAGE", "CHANNEL", "REACTION"]});
const fs = require('fs');
const prefix = '!';
bot.once('ready', () => {
console.log('Commandor is online!')
});
bot.commands = new Discord.Collection();
const commandFiles = fs.readdirSync('./Commands/').filter(file => file.endsWith('.js'))
for(const file of commandFiles){
const command = require (`./Commands/${file}`);
bot.commands.set(command.name, command)
}
bot.on('message', message =>{
if(!message.content.startsWith(prefix) || message.author.bot) return;
const args = message.content.slice(prefix.length).split(/ +/);
const command = args.shift().toLowerCase();
if (command === 'reactionrole') {
bot.commands.get('reactionrole').execute(message, args, Discord, bot);
} else if (command === 'twitchandyoutube') {
bot.commands.get('twitchandyoutube').execute(message, args, Discord, bot);
} else if (command === 'games') {
bot.commands.get('games').execute(message, args, Discord, bot);
} else if (command === 'clear') {
bot.commands.get('clear').execute(message, args);
}
});
bot.login(This is my very secret token :) );
//this is the module i made.
module.exports = {
name: 'games',
description: "Select the games",
async execute(message, args, Discord, bot) {
if(message.member.roles.cache.has('794900472632836116')) {
const channel = '795030215361429565';
const rlRole = message.guild.roles.cache.find(role => role.name === "Rocket League");
const csgoRole = message.guild.roles.cache.find(role => role.name === "Counter-Strike Global Offensive");
const rl = ('<:RocketLeague:796401366804856842>');
const csgo = ('<:CSGO:796402447739912202>');
const rlEmoij = ('796401366804856842');
const csgoEmoij = ('796402447739912202');
let embed = new Discord.MessageEmbed()
.setColor('#e42643')
.setTitle('Game selection')
.setDescription(`What games do you play?
Select here which games you like to play and see the text/voice channels from.\n\n`
+ `${rl} **(** Rocket League **)**\n`
+ `${csgo} **(** Counter-Strike Global Offensive **)**`);
let messageEmbed = await message.channel.send(embed);
messageEmbed.react(rlEmoij);
messageEmbed.react(csgoEmoij);
bot.on('messageReactionAdd', async (reaction, user) => {
if (reaction.message.partial) await reaction.message.fetch();
if (reaction.partial) await reaction.fetch();
if (user.bot) return;
if (!reaction.message.guild) return;
if (reaction.message.channel.id == channel) {
if (reaction.emoji.name === rlEmoij) {
await reaction.message.guild.members.cache.get(user.id).roles.add(rlRole);
}
if (reaction.emoji.name === csgoEmoij) {
await reaction.message.guild.members.cache.get(user.id).roles.add(csgoRole);
}
} else {
return;
}
});
bot.on('messageReactionRemove', async (reaction, user) => {
if (reaction.message.partial) await reaction.message.fetch();
if (reaction.partial) await reaction.fetch();
if (user.bot) return;
if (!reaction.message.guild) return;
if (reaction.message.channel.id == channel) {
if (reaction.emoji.name === rlRole) {
await reaction.message.guild.members.cache.get(user.id).roles.remove(rlRole);
}
if (reaction.emoji.name === csgoEmoij) {
await reaction.message.guild.members.cache.get(user.id).roles.remove(csgoRole);
}
} else {
return;
}
});
} else {
message.channel.send("You don't have the right permissions to do this.");
}
}
}
在这两个事件(MessageReactionAdd
、MessageReactionRemove
)中,您都检查Reaction.emoji.Name
是否为RLEmoij
/CSGoemoij
。
但属性reaction.emoji.name
只是emoji的名称。因此,在您的情况下,它将是rocketleage
或csgo
。您需要获得ID:reaction.emoji.id
。
这样做:
if (reaction.emoji.id === rlEmoij) {
await reaction.message.guild.members.cache.get(user.id).roles.add(rlRole);
}
if (reaction.emoji.id === csgoEmoij) {
await reaction.message.guild.members.cache.get(user.id).roles.add(csgoRole);
}
我正在尝试做一个命令,给用户一个角色。它以前是工作的,但不是它只是给机器人一个角色。 这也发生在我的level命令上,该命令应该检查用户的级别。它检查的是机器人的水平,而不是用户的水平。
我对用JavaScript编码非常陌生,我正在为不和谐服务器设置一个简单的事件机器人。 这在概念上非常简单,机器人真正做的只是允许任何人给他们提到的任何成员分配一个“死亡”角色。 然而,我面临的问题是: •kill命令,虽然它可以为人们提供死亡角色,并宣布一个成员被淘汰,但如果一个成员已经死亡或具有职员角色,它不会抛出相应的错误。它只是宣布该成员已被淘汰,而不管他们扮演什么角色。 •输入任何带有字
Bot只是不工作:/Bot没有给出任何错误
我有一个机器人,我正在努力让它变得更好。它叫做版主机器人,我正在添加新命令。我只是到处找不到代码。 如何让版主机器人在用户加入服务器时赋予他们角色。如何使服务器所有者可以配置它,以便机器人可以在不同的服务器上使用? 我还希望它对owner命令进行DM,这样他们就可以看到它,只有owner集角色才能访问该命令。 这听起来很先进,可能是,但是有人能为我写代码或者告诉我如何制作吗?
我正在做一个giverole命令,就像!giverole{member}{role},但是我怎么知道bot最高角色是否高于提到的角色。我还没试过什么,因为我卡住了,请帮帮我。 我正在使用discord.js v12
我想给我的机器人一个通过命令分配角色的功能 例如,将赋予Mod的角色。 我的: 我的文件: 我得到一个错误说成员是空的。我做错什么了吗?