You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.25 21:45:04