1

我有一个关于不和谐的简单问题。我正在尝试创建一个经济系统,它运行良好,但我想对其进行一些定制。我正在使用这个人的模块:https ://github.com/Rapptz/discord.py

如何将用户名转换为不和谐的 ID。例如,如果我有一个不和谐的“命令”,允许人们互相赠送金钱,例如:james#0243types !give 100 bob#9413

我如何转换bob#9413为不和谐的 ID,58492482649273613因为在我的数据库中,我将人们的用户存储为他们的 ID,而不是他们的实际用户名,因为人们可以更改他们的用户名。

4

4 回答 4

2

使用转换器来获取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")

转换器非常灵活,因此您可以提供姓名、昵称、ID 或提及。

于 2019-03-15T13:32:00.843 回答
0
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)

您可以使用它来收集呼叫来源服务器的所有成员信息。这是我用于此的代码。

于 2019-03-15T13:41:28.050 回答
0

你可以使用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”都将进行查找。然而,前者会给出更精确的结果。

于 2019-03-15T10:25:53.867 回答
0

on_message回调函数传递给message.

message是一个discord.Message实例。
它具有authormentions属性,这些属性可以是实例discord.Memberdiscord.User取决于消息是否在私有通道中发送。

该类discord.Member的子类discord.User和用户id可以在那里访问。

于 2019-03-15T06:24:10.867 回答