Я совсем недавно создал бота с простым алгоритмом. Предполагается, что бот приветствует вас на определенном канале, затем вы должны сообщить ему свой уровень имени (в определенной игре) и свою команду (team1 team2 или team3). Когда вы делаете это, он должен называть вас в честь вашего псевдонима и уровня и устанавливать вашу роль разногласия после вашей команды и, наконец, после того, как он делает это, он просит вас сделать скриншот вашего профиля в личку, и он отправляет снимок экрана на другой канал ( это не важная часть).
Часть именования и функция скриншота работают просто отлично и, как и предполагалось, по некоторой неизвестной причине функция setRole работает, по-видимому, случайным образом. Иногда он дает правильную роль члену, иногда нет. Вот мой алгоритм:
if (message.channel.id == welcomeid){
var words = message.content.split(' ');
var name = words[0];
var number = words[1];
var team = words[2];
if (typeof words[0] === "undefined" || typeof words[1] === "undefined" || typeof words[2] === "undefined"){
message.reply("error checker")
return;
}
team = team.toLowerCase();
if (name.includes('team1') == 1 || name.includes('team2') == 1 || name.includes('team3') == 1 || name.includes('team4') == 1 ){
message.reply("Another error");
return;
}
else if (name.length < 3){
message.reply("error for name length");
return;
}
else if (isNaN(number)){
message.reply("error for checking if level is a number");
return;
}
else if (number > 40 || number < 1 ) {
message.reply("error for checking if level is above one and below 40");
return;
}
else {
if (team.includes("team1")){ //those 4 ifs are the problematic part
message.member.setNickname(name+" | "+number)
.then(console.log)
.catch(console.error);
message.member.addRole(team1id)
.then(console.log)
.catch(console.error);
screenShot();
}
else if (team.includes("team2")){
message.member.setNickname(name+" | "+number)
.then(console.log)
.catch(console.error);
message.member.addRole(team2id)
.then(console.log)
.catch(console.error);
screenShot();
}
else if (team.includes("team3")){
message.member.setNickname(name+" | "+number)
.then(console.log)
.catch(console.error);
message.member.addRole(team3id)
.then(console.log)
.catch(console.error);
screenShot();
}
else if (team.includes("team4")){
message.member.setNickname(name+" | "+number)
.then(console.log)
.catch(console.error);
message.member.addRole(team4id)
.then(console.log)
.catch(console.error);
screenShot();
}
else {
message.reply("team error");
return;
}
}
}
Конечно, мне не нужно, чтобы бот давал роли в любое удобное для него время, и я не вижу какой-либо части кода, которая противоречит "addrole" функция.