Сделал для вас такое решение, однако это не панацея и ники по типу:
"Nick Name" он не найдет.
Но за то будет отлично работать для ников по типу:
"Nickname".
@bot.command(pass_context = True)
@commands.has_permissions(administrator = True)
async def checkuser_user(ctx, arg):
await ctx.channel.send('Please, wait')
# Пребираем все пользователей на сервере.
for guild in bot.guilds:
for member in guild.members:
# Сравниваем введенный ник и ники тех кто есть на сервере, убирая идентификатор из ника "#9999"
if arg == str(member)[0:-5]:
PREFIX = '>'
emb = discord.Embed(title = 'User info')
emb.add_field(name = '{}Bans'.format(PREFIX),value = '0')
emb.add_field(name = '{}Kicks'.format(PREFIX),value = '0')
emb.add_field(name = '{}Warns'.format(PREFIX),value = '1/3')
emb.add_field(name = '{}Ban reason: '.format(PREFIX),value = 'None')
emb.add_field(name = '{}Role history'.format(PREFIX),value = 'Verify.')
await ctx.send(embed = emb)
И второй вариант с использованием пакета:
fuzzywuzzy
Этот вариант позволяет более гибко искать нужных пользователей, в том числе, если будет допущена незначительная ошибка в написании ника.
from fuzzywuzzy import fuzz
@bot.command(pass_context = True)
@commands.has_permissions(administrator = True)
async def checkuser_user(ctx, arg):
await ctx.channel.send('Please, wait')
# Пребираем все пользователей на сервере.
for guild in bot.guilds:
for member in guild.members:
# Сравниваем введенный ник и ники полученные из списка.
if fuzz.partial_ratio(arg, str(member)[0:-5]) > 95: # <- Процент при котором совпадение "успешно".
PREFIX = '>'
emb = discord.Embed(title = 'User info')
emb.add_field(name = '{}Bans'.format(PREFIX),value = '0')
emb.add_field(name = '{}Kicks'.format(PREFIX),value = '0')
emb.add_field(name = '{}Warns'.format(PREFIX),value = '1/3')
emb.add_field(name = '{}Ban reason: '.format(PREFIX),value = 'None')
emb.add_field(name = '{}Role history'.format(PREFIX),value = 'Verify.')
await ctx.send(embed = emb)