Discord Bot开发中如何获取触发command命令的实际用户身份
实现方法
discord.py 框架的命令上下文对象ctx的ctx.author属性存储了触发命令的用户完整身份数据,你只需要修改日志方法的参数定义,调用时传入该属性即可:
- 第一步:修改
ConsoleCMD方法,新增接收用户信息的参数,调整日志打印模板 - 第二步:在命令函数中调用
ConsoleCMD时传入ctx.author,同时注意原代码调用时多传入了冗余的self参数,需要删除,否则会触发参数不匹配报错
import datetime # 如果你之前没有导入datetime模块需要加上这行 # 修改ConsoleCMD方法,新增user参数 def ConsoleCMD(self, cmd, user): # 可自定义用户信息展示格式,这里同时展示用户名、四位标签、用户ID方便排查 user_info = f"{user.name}#{user.discriminator} (ID: {user.id})" print(f"{datetime.now().strftime('%H:%M:%S')}\t{user_info} used the '{cmd}' command!") @commands.command() async def ping(self, ctx): await ctx.send('Pong!') # 传入触发命令的用户对象,删除冗余的self参数 self.ConsoleCMD("ping", ctx.author)
如果需要显示用户在当前服务器的昵称而不是全局用户名,可以把user.name替换为user.display_name。
内容的提问来源于stack exchange,提问作者Flux So2
相关产品推荐
相关产品推荐

