Как конвертировать имя пользователя в идентификатор диска? - PullRequest
0 голосов
/ 15 марта 2019

У меня есть простые вопросы о раздоре.Я пытаюсь создать экономическую систему, и она работает хорошо, но я хочу немного ее настроить.Я использую модуль этого человека: https://github.com/Rapptz/discord.py

Как преобразовать имя пользователя в идентификатор диска.Например, если у меня есть «команда» разногласия, позволяющая людям дарить друг другу деньги, например: james#0243 types !give 100 bob#9413.

Как я могу преобразовать bob#9413 в идентификатор диска, такой как 58492482649273613потому что в моей базе данных пользователи хранятся в виде их идентификатора, а не фактического имени пользователя, поскольку люди могут изменять свое имя пользователя.

Ответы [ 4 ]

2 голосов
/ 15 марта 2019

Используйте конвертер , чтобы получить Member объект цели, который будет включать их id.

from discord import Member
from dicord.ext.commands import Bot

bot = Bot(command_prefix='!')

@bot.command()
async def getids(ctx, member: Member):
    await ctx.send(f"Your id is {ctx.author.id}")
    await ctx.send(f"{member.mention}'s id is {member.id}")

bot.run("token")

Конвертеры довольно гибкие, поэтому вы можете давать имена, псевдонимы, идентификаторы или упоминания.

0 голосов
/ 15 марта 2019
prefix_choice = "!"
bot = commands.Bot(max_messages=10000, command_prefix=commands.when_mentioned_or(prefix_choice))

@bot.command()
async def membersLog(ctx):
    for i, member in enumerate(ctx.message.server.members):
        list_mem_num = (f'{i}')
        list_mem_id = (f'{member.id}')
        list_mem = (f'{member}')
        list_mem_name = (f'{member.name}')
        list_all = (f'Number: {list_mem_num} ID: {list_mem_id} Name: {list_mem} ({list_mem_name})\n')
        print(list_all)

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

0 голосов
/ 15 марта 2019

Вы можете использовать get_member_named , чтобы сделать что-то вроде

@client.command(pass_context = True)
async def name_to_id(ctx, *, name):
  server = ctx.message.server
  user_id = server.get_member_named(name).id

Имя может иметь необязательный аргумент дискриминатора, например, «Jake # 0001» или «Jake» будут обасделать поиск.Однако первый даст более точный результат.

0 голосов
/ 15 марта 2019

on_message передана функция обратного вызова message.

message является экземпляром discord.Message.
Имеет атрибуты author и mentions, которые могут быть экземплярами discord.Member или discord.User в зависимости от того, отправлено ли сообщение в частном канале.

Подклассы discord.Member класса discord.User и пользователь id могут быть доступны там.

...