Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/391.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Discord.js bot缺少运行方法_Javascript_Bots_Discord.js - Fatal编程技术网

Javascript Discord.js bot缺少运行方法

Javascript Discord.js bot缺少运行方法,javascript,bots,discord.js,Javascript,Bots,Discord.js,我一直在命令basic:sortinghat error:sortinghat没有run方法中遇到这个错误。我已经检查了大约10分钟的代码,并为相同的结果进行了更改,但似乎找不到修复程序,控制台中的错误日志指向它检测错误的位置,因此没有帮助 可能是一个简单的解决方法我保证我正在尝试xD const commando = require ('discord.js-commando') module.exports = class sortinghat extends commando.Comm

我一直在命令basic:sortinghat error:sortinghat没有run方法中遇到这个错误。我已经检查了大约10分钟的代码,并为相同的结果进行了更改,但似乎找不到修复程序,控制台中的错误日志指向它检测错误的位置,因此没有帮助

可能是一个简单的解决方法我保证我正在尝试xD

const commando = require ('discord.js-commando')


module.exports = class sortinghat extends commando.Command {
    constructor(client) {
        super(client, {
            name: 'sortinghat',
            aliases: ['sorting','sortingh'],
            group: 'basic',
            memberName: 'sortinghat',
            description: 'allows you to be sorted into one of the four houses',
        });
    }}

exports.run = async (client, message, args) => {

    await message.delete().catch(O_o=>{});
    const s = message.guild.roles.cach.find('707867871786827776'); //slytherin
    const g = message.guild.roles.cach.find('709348559052603423'); //gryffindor
    const h = message.guild.roles.cach.find('707867828346290256'); //hufflepuff
    const r = message.guild.roles.cach.find('709348458062020660'); //ravenclaw

    const filter = (reaction, user) => ['s', 'g', 'h', 'r'].includes(reaction.emoji.name) && user.id === message.author.id;

    const embed = new RichEmbed()
        .setTittle('Sorting Hat')
        .setDescription(' Slytherin ${s.toString()} \n Gryffindor ${g.toString()} \n Hufflepuff ${h.toString()} \n Ravenclaw ${r.toString()}')
        .setColor('#fffffd')
        .setFooter('ID: ${message.author.id}');

    message.channel.send(embed).then(async msg => {
        await message.react(':regional_indicator_s:');
        await message.react(':regional_indicator_g:');
        await message.react(':regional_indicator_h:');
        await message.react(':regional_indicator_r:');

        message.awaitReaction(filter, {
            max: 1,
            time: 30000,
            errors: ['cant sort at this time']
        }).then(collected => {
            const reaction = collected.first();

            switch (reaction.emoji.name) {
                case ':regional_indicator_s':
                    message.member.addRole(s).catch(err => {
                        console.log(err)
                        return message.channel.send('you were sorted into **${s.name}** House!').then(m => m.delete(3000));
                        msg.delete();
                    });

                break;
                 case ':regional_indicator_g':
                    message.member.addRole(g).catch(err => {
                        console.log(err)
                        return message.channel.send('you were sorted into **${s.name}** House!').then(m => m.delete(3000));
                        msg.delete();
                    });

                    break;
                    case ':regional_indicator_h':
                        message.member.addRole(h).catch(err => {
                            console.log(err)
                            return message.channel.send('you were sorted into **${s.name}** House!').then(m => m.delete(3000));
                            msg.delete();
                        });

                        break;
                        case ':regional_indicator_r':
                            message.member.addRole(r).catch(err => {
                                console.log(err)
                                return message.channel.send('you were sorted into **${s.name}** House!').then(m => m.delete(3000));
                                msg.delete();
                            });

                            break;



            }
         }).catch(collected => {
         return message.channel.send('Role not selected or timed out!');
        });

    }
    )}
export.run将不是sortinghat类中的方法

我认为应该像这样将run方法包装在类主体中:

module.exports=扩展commando.Command的类排序{ 构造客户{ 超级客户{ 名称:“sortinghat”, 别名:[“排序”、“排序”], 组:'基本', memberName:'sortinghat', 描述:'允许您被分类到四个房屋中的一个', }; } 异步运行客户端、消息、参数{ 等待消息。delete.catchO_o=>{}; const s=message.guild.roles.cach.find'707867871786827776';//斯莱特林 const g=message.guild.roles.cach.find'709348559052603423';//格兰芬多 const h=message.guild.roles.cach.find'707867828346290256';//hufflepuff const r=message.guild.roles.cach.find'70934845806200660';//拉文克劳 const filter=reaction,user=>['s','g','h','r']; const embed=新的RichEmbed .设置标题“分拣帽” .setDescription'Slytherin${s.toString}\n格兰芬多${g.toString}\n赫夫勒普夫${h.toString}\n拉文克劳${r.toString} .setColor'fffff d' .setFooter'ID:${message.author.ID}'; message.channel.sendembed.thenasync消息=>{ 等待消息。反应:区域指示灯:; 等待消息。反应:区域_指示器_g:'; 等待消息。反应:区域_指示器_h:'; 等待消息。反应:区域_指示器_r:'; message.awaitReactionfilter{ 最高:1, 时间:30000, 错误:[“此时无法排序”] }.thencollected=>{ 常数反应=已收集。第一次; switch reaction.emoji.name{ 案例“:区域指标”: message.member.addRoles.catcherr=>{ console.logerr return message.channel.send“您被分类到**${s.name}**房子里!”。thenm=>m.delete3000; msg.delete; }; 打破 案例:区域性指标: message.member.addRoleg.catcherr=>{ console.logerr return message.channel.send“您被分类到**${s.name}**房子里!”。thenm=>m.delete3000; msg.delete; }; 打破 案例:区域_指标_h': message.member.addRoleh.catcherr=>{ console.logerr return message.channel.send“您被分类到**${s.name}**房子里!”。thenm=>m.delete3000; msg.delete; }; 打破 案例“:区域性指标” message.member.addRoler.catcherr=>{ console.logerr return message.channel.send“您被分类到**${s.name}**房子里!”。thenm=>m.delete3000; msg.delete; }; 打破 } }.catchcollected=>{ 返回message.channel.send“角色未选择或超时!”; }; } } }
其他人修复了库找不到的问题。请运行,但您还有许多其他错误,因此这里有一个快速修复:

module.exports=扩展commando.Command的类排序{ 构造客户{ 超级客户{ 名称:“sortinghat”, 别名:[“排序”、“排序”], 组:'基本', memberName:'sortinghat', 描述:'允许您被分类到四个房屋中的一个', }; } 异步运行客户端、消息、参数{ wait message.delete.catcherr=>{}; const roleCache=message.guild.roles.cache; 康斯特·斯莱特林=roleCache.get'707867871786827776'; 康斯特·格兰芬多=roleCache.get'709348559052603423'; const hufflepuff=roleCache.get'707867828346290256'; const ravenclaw=roleCache.get'7093484580620660'; const roles={s:slytherin,g:gryffindor,h:hufflepuff,r:ravenclaw}; 常数emojiNames=[s,g,h,r]; 骗局 st filter=reaction,user=>emojiNames.includesreaction.emoji.name&&user.id==message.author.id; //可以说是丑陋的,如果你想改变就改变吧 常量描述= `斯莱特林${Slytherin.toString} 格兰芬多${Gryffindor.toString} Hufflepuff${Hufflepuff.toString} Ravenclaw${Ravenclaw.toString}`; const embed=新的RichEmbed .设置标题“分拣帽” .SetDescription说明 .setColor'fffff d' .setFooter`ID:${message.author.ID}`; const regionalEmote=alpha=>`:区域指标${alpha}:`; //有时不知道您指的是哪条消息 message.channel.sendebed .thenmsg=>{ emojiNames.forEachasync alpha=>wait msg.reactRegional emotealpha; 返回msg.AwaitReactionFilter{ 最高:1, 时间:30000, 错误:[时间] }; } .thencollected=>{ 常数反应=已收集。第一次; //其他选项:切片,获取最后一个索引 常量alpha=reaction.emoji.name.replaceregional_指示器_uu; const selectedRole=角色[alpha]; message.delete; //如果是的话。那么在返回添加角色的承诺之后 //您将无法访问selectedRole,因此它就在这里 //也许有更好的办法,但是是的 返回message.member.roles.addselectedRole .then=>message.channel.send`您被分类到**${selectedRole.name}**房子里!`; } .catcherr=>message.channel.send“角色未选择或超时!”; } }```
还有更多的错误和糟糕的代码,你不仅使用discord.js库,还使用discord.js-commando子库,我真的建议你先学习基本的js。只是一直告诉我message.delete不是一个函数,但我知道它是;-;然后记录消息是什么,可能您正在传递另一个参数作为msg变量,就像客户端实例一样