#javascript #discord #bots
#javascript #Discord #боты
Вопрос:
Это мой первый вопрос здесь, поэтому я заранее приношу извинения, если я делаю что-то не так.
Как вы, возможно, знаете, Discord недавно внедрил некоторые изменения, которые сделали необходимым активировать привилегированные намерения шлюза, чтобы боты могли продолжать приветствовать новых участников и назначать им роли.
Мой бот находится на одном сервере, поэтому я предоставил ему как НАМЕРЕНИЕ ПРИСУТСТВИЯ, так и НАМЕРЕНИЕ УЧАСТНИКОВ СЕРВЕРА. У меня сложилось впечатление, что этого должно быть достаточно, чтобы бот снова начал работать в обычном режиме, но, к сожалению, он по-прежнему не приветствует новых участников и не присваивает им их пользовательскую роль. Все остальное работает как обычно (он реагирует на !nameofthebot), и бот подключен к сети. Я также вручную дал ему все необходимые разрешения в каналах, где я хочу, чтобы они были активны.
Я не очень разбираюсь в коде, и я создал этого бота благодаря чтению обсуждений здесь и на других сайтах. Поэтому мне интересно, может быть, есть что-то, что тоже нуждается в обновлении на этом уровне. Вот код, о котором идет речь:
require('dotenv').config()
const Discord = require('discord.js');
const client = new Discord.Client();
client.on('ready', () => {
console.log(`Logged in as ${client.user.tag}!`);
});
client.on('guildMemberAdd', function(member) {
member.guild.channels.get("539191415624826903").send(`Welcome to our server <@${member.user.id}>. Please do not forget to read the rules, and if you have time, don't hesitate to tell us a little about yourself.<:__:551298213622317066>`)
var role = member.guild.roles.get("549670094079524867");
member.addRole(role)
});
client.login(process.env.BOT_TOKEN);
Я дважды проверил идентификаторы канала и участника, и они должны быть в порядке. На всякий случай, если это может помочь, код размещен на GitHub, а бот работает благодаря Heroku.
Заранее благодарю всех, кто, возможно, сможет помочь мне понять, чего мне не хватает.
Ответ №1:
Для событий guildMemberAdd, guildMemberRemove, guildMemberUpdate вам необходимо включить намерение «GUILD_MEMBERS»
Пожалуйста, проверьте эту ссылку
вот как я создаю свой бот-клиент:
const Discord = require("discord.js");
const { Client, Intents } = require("discord.js");
client = new BotClient({
ws: { intents: [Intents.NON_PRIVILEGED, "GUILD_MEMBERS"] },
});
или
const Discord = require("discord.js");
const { Client, Intents } = require("discord.js");
client = new BotClient({
ws: { intents: Intents.ALL },
});
Пожалуйста, также убедитесь, что вы включили ПРИВИЛЕГИРОВАННЫЕ намерения на своем портале разработчика Discord
Комментарии:
1. Спасибо вам за это! Я включил все привилегированные намерения на портале разработчика, но когда я пробую ваш код, он сообщает мне «ReferenceError: намерения не определены».
2. Я попытался определить намерения, но бот по-прежнему не реагирует на присоединение новых участников. Вот мой новый код:
3.
const Discord = require("discord.js"); const { Client, Intents } = require("discord.js"); const client = new Client({ ws: { intents: Intents.ALL }}); client.on("ready", () => { console.log("I am ready"); }); client.on('guildMemberAdd', function(member) { member.guild.channels.get("636919952787374092").send(
Добро пожаловать на наш сервер <@${member.user.id }>.) var role = member.guild.roles.get("637288616057503749"); member.addRole(role) });