Как удалить роль discord js

Как удалить определенную роль у всех, у кого она есть Discord.js v12

  • Post author: admin
  • Запись опубликована: 10 января, 2022
  • Post category: Вопросы по программированию

#javascript #node.js #discord #discord.js

Вопрос:

Использование Discord.js (V12)

В настоящее время я пытаюсь создать сценарий, который делает так, чтобы, когда кто-то говорит «что», бот отвечал «Вы застряли с этим!», а затем давал пользователю роль. Но я хочу, чтобы, когда следующий человек скажет, что именно, он снимет эту роль с предыдущего владельца. В настоящее время он работает там, где он может добавлять роль, но не удалять ее у предыдущего человека.

Вот мой текущий рабочий код:

module.exports = < name: ‘what’, description: ‘Responds with You are stuck with it and adds role!’, execute(message, args) < message.channel.send(‘You are stuck with it!’); message.member.roles.add(‘886996311117795429’) >>

1. Просто сохраните message.member в переменной за пределами вашего module.exports , например var previousMember , в конце вашего execute() метода после добавления к ним роли.

Discord.js Bot Development — Add and Remove Role — Episode 7

Затем добавьте if (previousMember) previousMember.roles.remove(«role id») в начало свое execute() . Это очень просто. Если этого недостаточно для вас, вы можете выполнить поиск в кэше членов гильдии и отфильтровать всех участников, у которых есть роль с заданным идентификатором роли, а затем использовать .remove() каждого из них.

Ответ №1:

Самый простой способ сохранить данные даже после перезапуска-это использовать quick.db

Еще по теме:  Как добавить тикеты в дискорд

//your other stuff if you have any const db = require(‘quick.db’) module.exports = < name: ‘what’, description: ‘Responds with You are stuck with it and adds role!’, execute(message, args) < message.channel.send(‘You are stuck with it!’); message.member.roles.add(‘886996311117795429’) if(db.get(‘previousRoleUser’))< let prevUser = message.guild.members.cache.find(m =>m.id === db.get(‘previousRoleUser’)); if(prevUser) < prevUser.roles.remove(‘886996311117795429’) >db.set(‘previousRoleUser’, message.author.id) > >

Приведенный выше код является просто примером, который не тестируется. Но я думаю, что это как — то сработало бы. Просто установите значение предыдущего пользователя в quick.db, а затем извлеките оттуда информацию, когда захотите ее использовать.

1. Вы также можете использовать сообщение.гильдия.участники.кэш. функция фильтрации также была бы более эффективной, так как иногда присоединение базы данных добавляет много путаницы некоторым программистам, как правило, с хорошими ответами!!

2.

Честно говоря, я бы просто использовал кэш членов гильдии (или извлекал членов гильдии), как мы с Jeffplays2005 упоминали в наших комментариях. Устраняет необходимость в сохранении каких-либо данных, будь то в переменной или базе данных. Тем более, что даже если бот выйдет из строя, этот подход все равно будет работать так же хорошо, как и база данных. Хотя в любом случае работает.

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

[Discord.js Series #21] — Add/Remove Role

Как мне удалить роль с Discord-ботом по прошествии определенного времени? (Javascript)

28.12.2018 06:22

Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний.

Все внешние компоненты, рассмотренные здесь до сих пор, взаимодействуют с клиентской стороной. Однако, если они подвергаются атаке, они не.

Проще говоря, компонент — это фабрика для создания элементов.

Сегодня я хочу познакомить вас с библиотекой Zod и раскрыть некоторые ее особенности, например, возможности валидации и трансформации данных, а также.

Еще по теме:  Как написать бота на js для дискорда

discord.js — удалить определенную роль из всех участников

Я пытаюсь удалить роль в моей гильдии из многих людей. Тем не менее, не все в гильдии играют эту роль, и их большое .

message.guild.members.cache.forEach(member => < member.roles.remove(«12345678901234»); >);

Этот код работает, но он не эффективен. Код выше очень медленный. У вас есть лучший код? Спасибо!

zzz 14 Июл 2020 в 15:14

2 ответа

Лучший ответ

Я бы удалил роль, а затем создал ее снова.

const role = message.guild.roles.cache.get(«RoleID»); message.guild.roles.create( < data: < name: role.name, color: role.color, hoist: role.hoist, position: role.position, permissions: role.permissions, mentionable: role.mentionable >>) role.delete(‘I had to.’)

Он работает очень быстро, намного быстрее, чем захват каждого члена вручную и удаление роли, особенно на большом сервере.

MakeHellTal 14 Июл 2020 в 15:08

const Role = message.guild.roles.cache.get(«RoleID»); Role.members.forEach((member, i) => < // Looping through the members of Role. setTimeout(() =>< member.roles.remove(Role); // Removing the Role. >, i * 1000); >);

Я предполагаю, что ваш код работает медленно из-за ограничений API Discord. У вас нет задержек в вашем коде, что означает, что ваш код будет выполнен немедленно.

Приведенный мною код удаляет роль из члена каждые 1 секунду.

Если вы хотите удалить роль немедленно, вам нужно удалить ее. Это будет удалено от всех.

Источник: question-it.com

Рейтинг
( Пока оценок нет )
Загрузка ...