Как получить пользователя по id discord py
Перейти к содержимому

Как получить пользователя по id discord py

  • автор:

Как получить пользователя по id discord.py?

Я получаю id пользователя из папки, и переделываю в int.

elif n == ":": mesg = mesg.join(wordo) wordo.clear() wordo.append(mesg) print(wordo) member = bot.get_user(mesg) break else: await channel.send(f"Item ```` not found. ``>list`, to get list of items") else: await channel.send(f"u cant do it in this channel") if findor == 1: await author.send(f"U buying ```` from ````") await member.get_user(mesg).send(f"```` want buy your ````") elif findor == 0: await channel.send(f"Item ```` not in sell.")

f
и получаю ошибку

AttributeError: 'NoneType' object has no attribute 'get_user'
  • Вопрос задан более двух лет назад
  • 838 просмотров

Как забрать у пользователя роль, зная только его ID? Discord.py

У меня есть ID пользователя, и я хочу забрать у него роль. Как это можно сделать? Как я понял, мне нужен объект member. Спасибо! Все, что у меня есть:

Отслеживать
задан 19 сен 2021 в 13:22
137 11 11 бронзовых знаков
а для вас весь интернет в помощь — stackoverflow.com/questions/48906438/…
19 сен 2021 в 18:51
увы, но я не могу так написать. Я использую событие on_raw_reaction_remove. И оно дает только ID
19 сен 2021 в 18:54

варианта два — хорошенько прошерстить документацию, которая я уверен хороша\найти что либо похожее на вашу проблему. либо же переписать методы

19 сен 2021 в 18:57
а как их переписать? Если бы я знал, то не писал бы сюда
19 сен 2021 в 18:58

ну вы говорите, что обрабатываете какое-то событие. попробуйте другой обработчик например, в дискорд апи я не шарю, но уверен что эта задача решаема

19 сен 2021 в 19:00

1 ответ 1

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

Создаем команду и принимаем 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, role = discord.utils.get(ctx.guild.roles, await member.add_roles(role) @bot.event async def on_command_error(ctx, error): if isinstance(error, commands.errors.BadArgument): await ctx.send(f', укажите `id` пользователя. Не удалось преобразовать указанный аргумент в число!') bot.run('TOKEN') 

Discord.py get user object from id/tag

I’m using the discord.py library to build a discord bot. I’m trying to get a User object from an id or tag, however, I am using a user account not a bot account, so I can’t use get_user_info(). Is there any way to do this on a user account?

1,764 3 3 gold badges 16 16 silver badges 39 39 bronze badges
asked Feb 3, 2019 at 4:07
113 1 1 gold badge 1 1 silver badge 6 6 bronze badges

9 Answers 9

If you know the user id, I suggest using bot.get_user(user_id) instead.

answered May 3, 2019 at 9:42
BluePigeon BluePigeon
1,764 3 3 gold badges 16 16 silver badges 39 39 bronze badges
olny works if the cache has it. use fetch_user otherwise
Jan 15, 2021 at 11:51

If you’re using commands , you can use a converter:

@bot.command(pass_context=True) async def mycommand(ctx, user: discord.User): # user is a User object 

Other wise, you can use Client.get_all_members to get all Member objects you can see.

from discord.utils import get user = get(bot.get_all_members(), user: # found the user else: # Not found the user 

2,645 1 1 gold badge 30 30 silver badges 41 41 bronze badges
answered Feb 3, 2019 at 5:31
Patrick Haugh Patrick Haugh
59.4k 13 13 gold badges 88 88 silver badges 95 95 bronze badges
The id is guilds ids or user id?
Jan 30, 2022 at 3:35

ctx.message.server.get_member(id) or message.server.get_member(id) # id must be of type int 

This will return you a discord.Member object.

2,645 1 1 gold badge 30 30 silver badges 41 41 bronze badges
answered Feb 9, 2019 at 18:56
Mahesh Mahi Mahesh Mahi
41 1 1 silver badge 5 5 bronze badges
Jan 12, 2021 at 15:09

This also will return your user object, but not your member object. If you want the member object, please follow AJ Lee’s answer

user = await client.fetch_user(user_id) 

2,645 1 1 gold badge 30 30 silver badges 41 41 bronze badges
answered Aug 19, 2021 at 9:52
Deniz Karakay Deniz Karakay
11 4 4 bronze badges

ctx.message.server.get_member(id) or message.server.get_member(id) 

I couldn’t write a comment to the previous answer (because of reputation) but make sure that id is int type here.

2,645 1 1 gold badge 30 30 silver badges 41 41 bronze badges
answered Mar 28, 2021 at 20:59
Yalchin Mammadli Yalchin Mammadli
454 4 4 silver badges 11 11 bronze badges

If you already have the id, call user = await ctx.bot.fetch_user(user_id) . No messing about with permissions.

If you only have the username and tag, you can use:

guild.fetch_members() user = guild.get_member_named("Example#1234") 

Note you’ll also need to turn the Members intent on in your code and the Discord Developer Portal in order to call fetch_members()

intents = discord.Intents.default() intents.members = True super().__init__( command_prefix='!', intents=intents ) 

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

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