所以,我正在制作一个公开的不和谐机器人,但我的脚本的一部分遇到了问题。我的踢/禁命令是为了完成$ban @user它必须在一个ping中完成。既然这是公开的,我真的很想解决这个问题。我不希望一个人搞砸并使其崩溃,从而使所有服务器都崩溃。如果有人不在ping中$ban user,它就会使机器人崩溃。下面是我的代码:
client.on("message", (message) => {
if (message.content.startsWith("$kick")) {
if (!message.member.roles.find("name", "MODS"))
return;
// Easy way to get member object though mentions.
var member = message.mentions.members.first();
// Kick
member.kick().then((member) => {
// Successmessage
message.channel.send(":wave: " + member.displayName + " has been successfully kicked :point_right: ");
}).catch(() => {
// Failmessage
message.channel.send("Access Denied");
});
}
});我不想让我的机器人不断崩溃,毁了别人的使用,有人能帮上忙吗?
发布于 2019-03-01 22:48:43
当你没有提到时,你的代码崩溃了,因为你没有理解这个用例。
添加一个简单的catch,例如一个return,对您来说应该是有效的:
client.on("message", (message) => {
if (message.content.startsWith("$kick")) {
if(!message.member.roles.find("name", "MODS"))
return;
// Easy way to get member object though mentions.
var member= message.mentions.members.first();
// No mentions catch
if (member === undefined) return;
// Kick
member.kick().then((member) => {
// Successmessage
message.channel.send(":wave: " + member.displayName + " has been successfully kicked :point_right: ");
}).catch(() => {
// Failmessage
message.channel.send("Access Denied");
});
}
});发布于 2019-03-01 22:48:25
我想当你输入$ban user (没有提到)时会发生什么,后来当你赋值var member = message.mentions.members.first();时,它会给你null (因为没有提到任何人)。尽量确保message.mentions.members不为空。
干杯:)
https://stackoverflow.com/questions/54946636
复制相似问题