Добавить роль пользователю из личных сообщений?

Итак, я делаю проверочного бота для одного из моих серверов Discord и столкнулся с проблемой.

Цель: Когда пользователь впервые присоединяется, ему будет разрешено разговаривать только по одному конкретному каналу, каналу проверки. Когда они набирают $verify {username on-site}, бот отвечает на сервере, предлагая пользователю проверить свои личные сообщения, чтобы продолжить. Будет предоставлена ​​уникальная строка, связанная с проверочной строкой в ​​базе данных, и пользователю Discord будет предложено изменить свой статус на сайте на данный уникальный идентификатор. Как только они это сделают, им будет предоставлена ​​роль «Проверено», и они смогут говорить о разногласиях.

Проблема: Когда все пойдет правильно, и пользователь готов к тому, чтобы получить роль на сервере Discord, бот не будет отдавать роль. Я предполагаю, что это связано с тем, что пользователь, которому бот пытается дать роль, не связан с фактическим сервером Discord для него, потому что он находится в DM.

Что я ищу: Если возможно, дайте мне пример того, как дать роль пользователю на сервере Discord из DM или документации. Это было бы действительно полезно!

Код: Включу только ту часть, которая важна, других ошибок нет.

snekfetch.get("https://vertineer.com/api/getUniq.php?discord_id = "+message.author.id).then(function(r){
                    console.info("here 2");
                    let uniq = JSON.parse(r.text);
                    if (uniq.id == uniq.status){
                        message.member.addRole("Verified");
                        message.reply("Success!");
                    } else {
                        message.reply("Looks like you didn't change your status to `"+uniq.id+"`, try again with `$finish`.");
                    }
                });

Вы можете добавить роль только для member, но не для author.

Ru Chern Chong 01.04.2018 05:13

Итак, как мне получить членский класс от пользователя DM? Также спасибо за обнаружение этой ошибки, но это все еще не исправляет ее.

dukeispie 01.04.2018 05:16
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
0
2
2 077
1

Ответы 1

Если это работает только для одного сервера, вы можете:

client.guilds.get('myguildID').members.get(message.author.id).addRole('193654001089118208')

А также, чтобы дать пользователю роль, вы не можете использовать имя. Вам необходимо использовать идентификатор или объект роли. Если вы предпочитаете использовать это имя, вам нужно будет сделать что-то вроде этого:

var role = client.guilds.get('myguildID').roles.find(role => role.name === "Verified");
client.guilds.get('myguildID').members.get(message.author.id).addRole(role);

Другие вопросы по теме