python - 你如何从 discord.py 中获得用户头像?
问题描述
我为我的机器人创建了一个头像命令,但它不适用于提及,我试图不使用'@client.command',因为它会导致其余代码出现问题
if message.content.startswith('+avatar'):
sender = message.author
name = sender.display_name
avatar_url = sender.avatar_url
embedVar = discord.Embed(title="**{}**".format(sender), description="Username: {}".format(name), color=0xec9e36)
embedVar.set_image(url = avatar_url)
await message.channel.send(embed=embedVar)
是我写的,我找不到任何让它工作的方法,任何形式的帮助都将不胜感激!
解决方案
我猜你正在尝试做类似
+avatar @mention
A 提及基本上是一个包含用户 ID 的字符串标记。
import re
def is_mention(s):
'''Check if the string is a valid 'mention' string for Discord'''
try:
return bool(re.match(r'<@!?(\d+)>', s))
except Exception:
return None
def mention_to_id(s):
'''Extract user-id from the mention'''
if is_mention(s):
return int(re.sub(r'[<>!@]', '', s))
return None
您可以先使用 提取提及字符串mention_str = message.content.split()[1]
,然后调用mention_to_id
函数从提及字符串中提取 ID。
之后,调用get_user
您的机器人(客户端)对象以获取用户,这将返回一个User
具有avatar_url
字段的对象。
总结一下,
if message.content.startswith('+avatar'):
message_parts = message.content.split()
if len(message_parts) > 1:
mention_str = message.content.split()[1]
if is_mention(mention_str):
user = client.get_user(mention_to_id(mention_str)
# do whatever with user.avatar_url
else:
# Warn about invalid mention
else:
# Whatever you want to do when there's no mention
参考:
推荐阅读
- c# - c#,构造函数使用变量作为新对象的名称的问题
- django - Django 模板没有显示正确的信息
- python - Python嵌套字典和列表连接字典键与列表值
- android - React Native - 在应用程序中打开本地 pdf 文件
- laravel - Laravel auth 用户角色更新
- visual-studio-code - 在集成 Powershell 窗口中使用默认 Powershell
- c - fprintf 打开文件,但没有写在上面
- python - 复数的numpy小数点精度
- python - 如果在执行 iterrows 时匹配给定条件,则删除行
- vba - 在当前查看的页面上选择表格(不是当前选择的页面)