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

使用全局变量的f-string时Nextcord命令失效问题求助

解决用变量名替代Discord用户ID的代码问题

问题根源

你的代码无法运行的核心原因是未正确定义并赋值isohel和bot这两个变量,Python执行时找不到这些变量的定义,会抛出NameError异常。硬编码ID能正常工作是因为直接使用了Python可识别的整数/字符串字面量。

解决方案

1. 提前定义ID变量

在代码的全局作用域(事件函数外部)定义存储ID的变量,注意Discord用户ID是整数类型:

# 按PEP8规范用大写命名常量,更易区分固定值和变量
ISOHEL_USER_ID = 476433240891195403
BOT_USER_ID = 1042552458175598642

2. 修改事件函数使用变量

将原代码中的硬编码ID替换为已定义的变量:

@client.event
async def on_message(message):
    if message.author == client.user:
        return

    if message.author.id == ISOHEL_USER_ID:
        if f"@{BOT_USER_ID}" in message.content:
            await message.reply("you pinged me")

额外注意事项

  • 确保变量名拼写完全正确,避免因大小写或拼写错误导致未定义错误
  • 变量定义必须在事件函数的作用域范围内(比如全局作用域),保证函数能正常访问到这些值
  • 用大写命名固定ID常量,符合Python代码规范,同时提升代码可读性

内容的提问来源于stack exchange,提问作者Isohel

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.12 05:42:07