Как забрать у пользователя роль, зная только его ID? Discord.py
У меня есть ID пользователя, и я хочу забрать у него роль. Как это можно сделать? Как я понял, мне нужен объект member. Спасибо!
Все, что у меня есть:
<RawReactionActionEvent
message_id=889129526414688307
user_id=760854742305079349
channel_id=880382991476613160
guild_id=761950725508956160
emoji= < PartialEmoji animated=False name='1️⃣' id=None>
event_type='REACTION_REMOVE' member=None>
Ответы (2 шт):
Автор решения: denisnumb
→ Ссылка
Создаем команду и принимаем id пользователя в виде аргумента.
В переменную ROLE_ID укажите id роли, которую хотите выдать/забрать.
Код большой, потому что в нем прописано большинство возможных исключений
from discord.ext import commands
import discord
bot = commands.Bot(command_prefix='!', intents=discord.Intents.all())
ROLE_ID = 794985313692286998
@bot.command()
async def give_role(ctx, user_id: int=None):
if ctx.channel.type == discord.ChannelType.private:
await ctx.send('Данную команду нельзя использовать в личных сообщениях!')
return
if user_id == None:
await ctx.send('Укажите `id` пользователя!')
return
else:
member = discord.utils.get(ctx.guild.members, id=user_id)
role = discord.utils.get(ctx.guild.roles, id=ROLE_ID)
await member.add_roles(role)
@bot.event
async def on_command_error(ctx, error):
if isinstance(error, commands.errors.BadArgument):
await ctx.send(f'{ctx.author.mention}, укажите `id` пользователя. Не удалось преобразовать указанный аргумент в число!')
bot.run('TOKEN')
Автор решения: Daniel
→ Ссылка
В результате я создал глобальную переменную(словарь) и в нее записал ID и member. Но если бота перезапустить, то вся эта информация стирается(