Как выдать роль всем участникам сервера дискорд
Перейти к содержимому

Как выдать роль всем участникам сервера дискорд

  • автор:

Как удалить/добавить роль всем участникам сервера?

Уважаемые кодеры, пытался написать сам, но увы не получилось, поэтому обращаюсь к вам.

В общем команда выглядит так !clearrole @role (!addrolem@role) соответственно это упоминание роли.

Насколько я понял, сначала надо узнать ID роли по упоминанию, а потом по итератору убрать/добавить ее всем участник сервера.

У меня была то одна ошибка, то бот не находил роль, из-за того, что я еще начинающий в библиотеки discord.py у меня не получилось, поэтому буду благодарен тем, кто напишет правильный и рабочий код.

  • Вопрос задан более трёх лет назад
  • 1863 просмотра

Комментировать
Решения вопроса 1

fixator10

discord.py имеет «расширение» для команд, с вещью, под названием «конвертеры», используйте их.
https://discordpy.readthedocs.io/en/stable/ext/com.

@bot.command() async def massrole(ctx, role: discord.Role): # discord.Role здесь будет использоваться как конвертер: # https://discordpy.readthedocs.io/en/stable/ext/commands/api.html#discord.ext.commands.RoleConverter for member in ctx.guild: if role not in member.roles: await member.add_roles(role)

Как выдать всем участникам сразу роль в дискорд?

Ставишь в дискорд канал бота Dyno ( https://dyno.gg/ ). После просто пишешь? role all Название роли. Дальше просто ждёшь. Обычно на 1 пользователя уходит примерно 1-2 секунды.

Денчик ЗайцевУченик (108) 3 года назад

а как потом забрать роль? допустим я сделал выдать роль мута у меня все замутились, а потом как так же быстро у всех забрать роль ?

Fluffy_C_a_T Знаток (430) Если ты всем роль мута выдал, то это как-то.. тупо.. Если ты применил это к 50+ людям, то иди сюда копайся (https://dyno.gg/commands#/Manager), если там человек 30, то легче и быстрее вручную сделать. Ну или ты можешь удалить роль мута, а потом мучатся пол часа, чтобы её восстановить.

МаксимУченик (193) 10 месяцев назад
25 минут сказал мне бот XD я без шуток кста 1542 участника

Fluffy_C_a_T Знаток (430) Максим, могло быть и хуже

Как дать роль участнику сервера временно discord.py (python)?

У меня есть бот, у которого есть команда !emprison . Данная команда должна добавить роль участнику сервера, но на время которое было задано. Как добавлять роли я знаю, но как дать временно? Также мне нужно чтобы команда работала только если у участника который написал команду, есть определенные роли. Пример кода:

import discord from discord.ext commands intents = discord.Intents.all() bot = commands.Bot(command_prefix="!", intents=intents) @bot.command() async def emprison(ctx, member_mention, time): time = int(time) user = ctx.author guild = self.get_guild(id) role = guild.get_role(id) await user.add_roles(role) # И тут выдается роль, но навсегда. Как это сделать временно? 

Отслеживать
задан 20 мая 2023 в 9:08
57 5 5 бронзовых знаков

Временно — это насколько? Если несколько минут или часов, то можно задержку выставить ( await asyncio.sleep(time_in_seconds) ), если в днях или месяцах, то тут уже лучше сохранять в файл дату, когда роль нужно забрать, а затем при запуске бота читать этот файл и проверять у каких участников нужно забрать роль именно сегодня.

20 мая 2023 в 9:40

Для теста временно я могу взять 10 секунд. И для этого использую asyncio.sleep(10) . Но как через время удалить роль у участника?

20 мая 2023 в 10:14

Вы же где-то в документации нашли метод для выдачи роли add_roles . Там же должно быть написано про метод, чтобы забрать роль. Скорее всего remove_roles или как-то так

20 мая 2023 в 11:21

Ну не в документации, а на этом сайте, когда искал как добавить роль. Но как ее забрать я не нашел (и причем через время). Вопрос уже решен.

Как раздать одну роль Дискорд НЕСКОЛЬКИМ ЧЕЛОВЕКАМ за одну команду Discord.py

Бот должен раздавать роли дискорд сервера нескольким людям за одно сообщение (команду) без использования реакций и доп.кнопок. Но я никак не могу это сделать. Получилось раздать роль только автору сообщения. Что я делаю не так и как это исправить? Код, дающий роль только автору этого сообщения:

import discord from discord.utils import get from discord.ext import commands client = commands.Bot(command_prefix="/", help_command=None) @client.command() async def test(ctx): member = ctx.message.author role_1 = member.guild.get_role("id of role") await member.add_roles(role_1) await ctx.channel.send(member) client.run("token") 

Отслеживать
задан 11 сен 2020 в 10:30
Чернов Алексей Чернов Алексей
43 2 2 серебряных знака 8 8 бронзовых знаков

1 ответ 1

Сортировка: Сброс на вариант по умолчанию

members = [список_нужных_участников] role_1 = member.guild.get_role("id of role") for member in members: await client.add_roles(member, role_1) 

Сам список формируйте из объектов member :

first = discord.utils.get(message.guild.members, name='Sam') members.append(first) 

UPDATE Вот так должен выглядеть ваш код (нужно использовать контекст ctx):

import discord from discord.ext import commands client = commands.Bot(command_prefix="/", help_command=None) @client.command(name="test") async def test(ctx): members = ['name1', 'name2'] role_1 = discord.utils.get(ctx.guild.roles, for member in members: current = discord.utils.get(ctx.message.guild.members, name=member) await current.add_roles(role_1) client.run("API_key") 

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *