我有一个关于不和谐的简单问题。我正在尝试创建一个经济系统,并且该系统运行良好,但是我想对其进行一些自定义。我正在使用此人的模块:https://github.com/Rapptz/discord.py
如何将用户名转换为不一致的ID。例如,如果我有一个不和谐的“命令”,允许人们互相赠予金钱,例如:james#0243
类型!give 100 bob#9413
。
如何将bob#9413
转换为58492482649273613
之类的不一致ID,因为在我的数据库中,由于人们可以更改其用户名,因此我将用户的用户存储为其ID,而不是其实际用户名。
答案 0 :(得分:2)
使用converter获取目标的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或提及。
答案 1 :(得分:0)
on_message
回调函数传递给message
。
message
是一个discord.Message
实例。
它具有author
和
mentions
属性可以是discord.Member
或discord.User
的实例,具体取决于消息是通过专用通道发送的。
discord.Member
类是discord.User
的子类,并且可以在此处访问用户id
。
答案 2 :(得分: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”都将进行查找。但是,前者将给出更精确的结果。
答案 3 :(得分: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)
您可以使用它来收集调用来自的服务器的所有memberinfo。这是我用于此的代码。