Javascript Discord.js bot缺少运行方法
我一直在命令basic:sortinghat error:sortinghat没有run方法中遇到这个错误。我已经检查了大约10分钟的代码,并为相同的结果进行了更改,但似乎找不到修复程序,控制台中的错误日志指向它检测错误的位置,因此没有帮助 可能是一个简单的解决方法我保证我正在尝试xDJavascript 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
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变量,就像客户端实例一样