Discord.py中提及成员时获取User ID的方法及报错解决
解决Discord.py中获取成员ID的AttributeError问题
报错原因是你未给member参数指定类型注解,Discord.py默认将其解析为字符串,而字符串没有id属性,因此触发AttributeError。另外你代码里的ctx.send缺少await关键字,这会导致消息无法正常发送。
修改方案如下:
- 给
member参数添加discord.Member类型注解,让Discord.py自动将输入转换为成员对象 - 给
ctx.send加上await关键字
修改后的完整Cogs结构代码:
import discord from discord.ext import commands class WarningCog(commands.Cog): def __init__(self, bot): self.bot = bot @commands.command() async def getID(self, ctx, member: discord.Member): await ctx.send(member.id)
如果已单独导入discord.Member,也可以简化注解:
from discord import Member # ... @commands.command() async def getID(self, ctx, member: Member): await ctx.send(member.id)
这样用户输入成员提及、用户名或ID时,Discord.py都会自动匹配对应成员对象,你就能正常获取其id用于警告次数记录了。如果输入无法匹配到服务器内的成员,命令会自动返回错误提示。
内容的提问来源于stack exchange,提问作者Saad-
相关产品推荐
相关产品推荐

