使用 MongoDB 重新启动后,如何使我的不和谐机器人反应起作用?

时间:2021-04-29 22:23:46

标签: javascript discord discord.js

我已经创建了一个发送嵌入消息的命令,并添加了反应,当点击该反应为用户授予/删除角色时,一切正常,但在机器人重新启动后,反应不再起作用。 我正在使用 MongoDB,我是新手,我对使用 MongoDB 不太了解,我也在使用指南针应用程序。 现在我想以某种方式让它与数据库一起工作,这样即使在重新启动后反应也能工作。 (ps:如果可能,不需要使用数据库)。 我也有一个票证命令,我遇到了同样的问题。

我当前的代码:

    const { MessageEmbed } = require('discord.js');

module.exports = {
    name: 'dev-roles',
    description: "Sets up a reaction role message.",
    async execute(message, args, Discord, client) {
        if(message.member.permissions.has("ADMINISTRATOR")){
        const channel = '835948463270264853';
        const JavaScript = message.guild.roles.cache.find(role => role.name === "JavaScript");
        const Java = message.guild.roles.cache.find(role => role.name === "Java");
        const HTML = message.guild.roles.cache.find(role => role.name === "HTML");
        const CSS = message.guild.roles.cache.find(role => role.name === "CSS");
        const Python = message.guild.roles.cache.find(role => role.name === "Python");
        const PHP = message.guild.roles.cache.find(role => role.name === "PHP");
        const Chash = message.guild.roles.cache.find(role => role.name === "C#");
        const Cpp = message.guild.roles.cache.find(role => role.name === "C++");
        const C = message.guild.roles.cache.find(role => role.name === "C");
 
        const JavaScriptEmoji = '1️⃣';
        const JavaEmoji = '2️⃣';
        const HTMLEmoji = '3️⃣';
        const CSSEmoji = '4️⃣';
        const PythonEmoji = '5️⃣';
        const PHPEmoji = '6️⃣';
        const ChashEmoji = '7️⃣';
        const CppEmoji = '8️⃣';
        const CEmoji = '9️⃣';
 
        let embed = new Discord.MessageEmbed()
            .setColor('#b3e5fc') //#e42643
            .setTitle('DEVELOPER ROLES')
            .setDescription('**ARE YOU A DEV?**\nIf yes, chose the coding languages you know!\nYou will be given acces to coding channels, where you can chat with oher developes, get some help with coding or just help others.\n\n**Note:**\nIf you are not a developer, please **do not** get these roles.\nIf you do so, you may be temporarely / permenantly baned from our server or using our bot.\n\n'
                + `**Reaction Roles:**\n`
                + `${JavaScriptEmoji} - for \`JavaScript\` - <@&834764911103180800>\n`
                + `${JavaEmoji} - for \`Java\` - <@&834764911124414464>\n`
                + `${HTMLEmoji} - for \`HTML\` - <@&834802358525362177>\n`
                + `${CSSEmoji} - for \`CSS\` - <@&834802359674601552>\n`
                + `${PythonEmoji} - for \`Python\` - <@&834764908054577183>\n`
                + `${PHPEmoji} - for \`PHP\` - <@&834802358071722024>\n`
                + `${ChashEmoji} - for \`C#\` - <@&834764911137128474>\n`
                + `${CppEmoji} - for \`C++\`\ - <@&834764911153643520>\n`
                + `${CEmoji} - for \`C\` - <@&834802357929377793>\n`);

        let messageEmbed = await message.channel.send(embed);
        messageEmbed.react(JavaScriptEmoji);
        messageEmbed.react(JavaEmoji);
        messageEmbed.react(HTMLEmoji);
        messageEmbed.react(CSSEmoji);
        messageEmbed.react(PythonEmoji);
        messageEmbed.react(PHPEmoji);
        messageEmbed.react(ChashEmoji);
        messageEmbed.react(CppEmoji);
        messageEmbed.react(CEmoji);
 
        client.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 === JavaScriptEmoji) {
                    await reaction.message.guild.members.cache.get(user.id).roles.add(JavaScript);
                }
                if (reaction.emoji.name === JavaEmoji) {
                    await reaction.message.guild.members.cache.get(user.id).roles.add(Java);
                }
                if (reaction.emoji.name === HTMLEmoji) {
                    await reaction.message.guild.members.cache.get(user.id).roles.add(HTML);
                }
                if (reaction.emoji.name === CSSEmoji) {
                    await reaction.message.guild.members.cache.get(user.id).roles.add(CSS);
                }
                if (reaction.emoji.name === PythonEmoji) {
                    await reaction.message.guild.members.cache.get(user.id).roles.add(Python);
                }
                if (reaction.emoji.name === PHPEmoji) {
                    await reaction.message.guild.members.cache.get(user.id).roles.add(PHP);
                }
                if (reaction.emoji.name === ChashEmoji) {
                    await reaction.message.guild.members.cache.get(user.id).roles.add(Chash);
                }
                if (reaction.emoji.name === CppEmoji) {
                    await reaction.message.guild.members.cache.get(user.id).roles.add(Cpp);
                }
                if (reaction.emoji.name === CEmoji) {
                    await reaction.message.guild.members.cache.get(user.id).roles.add(C);
                }
            } else {
                return;
            }
 
        });
 
        client.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 === JavaScriptEmoji) {
                    await reaction.message.guild.members.cache.get(user.id).roles.remove(JavaScript);
                }
                if (reaction.emoji.name === JavaEmoji) {
                    await reaction.message.guild.members.cache.get(user.id).roles.remove(Java);
                }
                if (reaction.emoji.name === HTMLEmoji) {
                    await reaction.message.guild.members.cache.get(user.id).roles.remove(HTML);
                }
                if (reaction.emoji.name === CSSEmoji) {
                    await reaction.message.guild.members.cache.get(user.id).roles.remove(CSS);
                }
                if (reaction.emoji.name === PythonEmoji) {
                    await reaction.message.guild.members.cache.get(user.id).roles.remove(Python);
                }
                if (reaction.emoji.name === PHPEmoji) {
                    await reaction.message.guild.members.cache.get(user.id).roles.remove(PHP);
                }
                if (reaction.emoji.name === ChashEmoji) {
                    await reaction.message.guild.members.cache.get(user.id).roles.remove(Chash);
                }
                if (reaction.emoji.name === CppEmoji) {
                    await reaction.message.guild.members.cache.get(user.id).roles.remove(Cpp);
                }
                if (reaction.emoji.name === CEmoji) {
                    await reaction.message.guild.members.cache.get(user.id).roles.remove(C);
                }
            } else {
                return;
            }
        });
    }
}
 
}   

感谢任何提前提供帮助的人。

0 个答案:

没有答案