DiscordAPIError: Unknown Message (Бот для назначения ролей в сообщении)

Я делаю бота Discord, который будет назначать некоторые роли, когда пользователь отправляет определенное сообщение. Я запускаю бота, и все компилируется идеально, но после того, как я ввожу Prihvacam uslove, что означает что-то вроде «Я принимаю правила», он назначает роли и выводит меня на сервер Discord:

Кроме того, кроме того, что он отправляет мне сообщение здесь, он также дает мне это в консоли:

DiscordAPIError: Unknown Message at RequestHandler.execute (C:UsersdellDesktopFAV-verifiernode_modulesdiscord.jssrcrestRequestHandler.js:154:13) at processTicksAndRejections (internal/process/task_queues.js:93:5) at async RequestHandler.push (C:UsersdellDesktopFAV-verifiernode_modulesdiscord.jssrcrestRequestHandler.js:39:14) at async MessageManager.delete (C:UsersdellDesktopFAV-verifiernode_modulesdiscord.jssrcmanagersMessageManager.js:126:5) DiscordAPIError: Unknown Message at RequestHandler.execute (C:UsersdellDesktopFAV-verifiernode_modulesdiscord.jssrcrestRequestHandler.js:154:13) at processTicksAndRejections (internal/process/task_queues.js:93:5) at async RequestHandler.push (C:UsersdellDesktopFAV-verifiernode_modulesdiscord.jssrcrestRequestHandler.js:39:14) at async MessageManager.delete (C:UsersdellDesktopFAV-verifiernode_modulesdiscord.jssrcmanagersMessageManager.js:126:5)

Это мой код на данный момент:

#!/usr/bin/env node «use strict»; require(«dotenv»).config(); const Discord = require(«discord.js»); const chalk = require(«chalk»); const moment = require(«moment»); const BOT_TOKEN = «HERE GOES MY BOT TOKEN» const VERIFICATION_CHANNEL = «831101010038095912» const VERIFIED_ROLE = «Plava» const VERIFIED_ROLE2 = «Zuta» const VERIFIED_ROLE3 = «Crvena» const VERIFIED_ROLE4 = «????┃Srbija» const client = new Discord.Client({ disableEveryone: true }); client.once(«ready», () => { console.log(chalk.greenBright(«[READY]»), `Logged in as ${client.user.tag} (${client.user.id}) at ${moment().format(«DD MMMM YYYY, hh:mm:ss»)}`); }); client.on(«message», message => { if (!message.guild) return; if (message.author.bot) return; if (message.content === «Prihvacam uslove» && message.channel.id === VERIFICATION_CHANNEL) { if (!message.channel.permissionsFor(message.guild.me).serialize().SEND_MESSAGES) return console.error(«Bot nema permisijunPotrebno je : SEND_MESSAGES»); if (!message.channel.permissionsFor(message.guild.me).serialize().ADD_REACTIONS) { console.error(«The bot doesn’t have the permission to add reactions.nRequired permission: `ADD_REACTIONS`»); message.channel.send(«Bot nema permisiju da salje poruku.nPotrebna permisija: `ADD_REACTIONS`») .then(m => m.delete({ timeout: 20000 })); return; } if (!message.channel.permissionsFor(message.guild.me).serialize().MANAGE_MESSAGES) { console.error(«Bot nema permisiju da obrise poruku.nRequired permission: `MANAGE_MESSAGES`»); message.channel.send(«Bot nema permisiju da obrise poruku.nRequired permission: `MANAGE_MESSAGES`») .then(m => m.delete({ timeout: 20000 })); return; } const messageRole = message.guild.roles.cache.find(role => role.name === VERIFIED_ROLE) const messageRole2 = message.guild.roles.cache.find(role => role.name === VERIFIED_ROLE2) const messageRole3 = message.guild.roles.cache.find(role => role.name === VERIFIED_ROLE3) const messageRole4 = message.guild.roles.cache.find(role => role.name === VERIFIED_ROLE4) //ONO STO SE DESI KADA NIJE POSTAVLJEN //——————————————————————————————————————- if (messageRole == null) return; if (!message.guild.me.hasPermission(«MANAGE_ROLES»)) { message.channel.send(«Bot nema permisiju da dodjeli role.nRequired permission: `MANAGE_ROLES`») .then(m => m.delete({ timeout: 20000 })); return; } if (message.guild.me.roles.highest.comparePositionTo(messageRole) < 1) { message.channel.send(«Pozicija ovog rola je veća od pozicije rola bota, pa se ne moze dodijeliti od strane bota.») .then(m => m.delete({ timeout: 20000 })); return; } if (messageRole.managed == true) { message.channel.send(«Ovo je automanaged role, ne moze biti dodijeljen.») .then(m => m.delete({ timeout: 20000 })); return; } //———————————————————————————————————————— if (messageRole2 == null) return; if (!message.guild.me.hasPermission(«MANAGE_ROLES»)) { message.channel.send(«Bot nema permisiju da dodjeli role.nRequired permission: `MANAGE_ROLES`») .then(m => m.delete({ timeout: 20000 })); return; } if (message.guild.me.roles.highest.comparePositionTo(messageRole2) < 1) { message.channel.send(«Pozicija ovog rola je veća od pozicije rola bota, pa se ne moze dodijeliti od strane bota.») .then(m => m.delete({ timeout: 20000 })); return; } if (messageRole2.managed == true) { message.channel.send(«Ovo je automanaged role, ne moze biti dodijeljen.») .then(m => m.delete({ timeout: 20000 })); return; } //———————————————————————————————————————- if (messageRole3 == null) return; if (!message.guild.me.hasPermission(«MANAGE_ROLES»)) { message.channel.send(«Bot nema permisiju da dodjeli role.nRequired permission: `MANAGE_ROLES`») .then(m => m.delete({ timeout: 20000 })); return; } if (message.guild.me.roles.highest.comparePositionTo(messageRole3) < 1) { message.channel.send(«Pozicija ovog rola je veća od pozicije rola bota, pa se ne moze dodijeliti od strane bota.») .then(m => m.delete({ timeout: 20000 })); return; } if (messageRole3.managed == true) { message.channel.send(«Ovo je automanaged role, ne moze biti dodijeljen.») .then(m => m.delete({ timeout: 20000 })); return; } //———————————————————————————————————————— if (messageRole4 == null) return; if (!message.guild.me.hasPermission(«MANAGE_ROLES»)) { message.channel.send(«Bot nema permisiju da dodjeli role.nRequired permission: `MANAGE_ROLES`») .then(m => m.delete({ timeout: 20000 })); return; } if (message.guild.me.roles.highest.comparePositionTo(messageRole4) < 1) { message.channel.send(«Pozicija ovog rola je veća od pozicije rola bota, pa se ne moze dodijeliti od strane bota.») .then(m => m.delete({ timeout: 20000 })); return; } if (messageRole4.managed == true) { message.channel.send(«Ovo je automanaged role, ne moze biti dodijeljen.») .then(m => m.delete({ timeout: 20000 })); return; } //——————————————————————————————————————- //ONO STO SE DESI KAD JE POSTAVLJEN ROLE if (message.member.roles.cache.has(messageRole2.id)) return; message.react(«✅»); message.member.roles.add(messageRole2) .then(() => message.delete({ timeout: 5000 })) .catch(error => { console.error(error.stack); message.channel.send(error.stack) .then(m => m.delete({ timeout: 20000 })); }); //—————————————————————————————————————- if (message.member.roles.cache.has(messageRole3.id)) return; message.react(«✅»); message.member.roles.add(messageRole3) .then(() => message.delete({ timeout: 5000 })) .catch(error => { console.error(error.stack); message.channel.send(error.stack) .then(m => m.delete({ timeout: 20000 })); }); //—————————————————————————————————————— if (message.member.roles.cache.has(messageRole4.id)) return; message.react(«✅»); message.member.roles.add(messageRole4) .then(() => message.delete({ timeout: 5000 })) .catch(error => { console.error(error.stack); message.channel.send(error.stack) .then(m => m.delete({ timeout: 20000 })); }); //—————————————————————————————————————— } }); client.login(BOT_TOKEN);

Может ли кто-нибудь помочь мне, как это решить? заранее спасибо

Реагирует ли бот на отправленное сообщение с помощью эмодзи ✅?   —  person Aldin    schedule 12.04.2021

@PerplexingParadox Да, это так. Он реагирует с ✅, затем удаляет мой Prihvacam uslove (что должно было произойти) и примерно через 2 секунды после этого. он распечатывает эти сообщения об ошибках.   —  person Aldin    schedule 12.04.2021

Что я также смог выяснить, так это то, что бот не назначает VERIFIED_ROLE .. В основном он не назначает эту роль Plava. (Плава означает синий)   —  person Aldin    schedule 12.04.2021

Похоже, вы могли бы попробовать исправить это, добавив в код операторы else. Потому что if условия могут казаться препятствием для этого, но на самом деле вы просто повторяете одни и те же шаги снова и снова подряд, но с разными ролями.   —  person Aldin    schedule 12.04.2021

Если только вы не планируете убедиться, что после того, как пользователь выберет ✅, он обязательно добавит все роли, которых у пользователя в настоящее время нет.   —  person Aldin    schedule 12.04.2021

Спасибо за помощь, вы действительно решили мою проблему. @PerplexingParadox   —  person Aldin    schedule 12.04.2021

Без проблем! Я добавил ответ для людей, у которых позже может возникнуть тот же вопрос, что и у вас.   —  person Aldin    schedule 12.04.2021

Источник: ledsshop.ru

Стиль жизни - Здоровье!