开发首个aiogram机器人提示chat_id、text局部变量未使用如何解决
警告产生原因
这两个警告的核心诱因是Python缩进语法错误:
- Python以缩进划分代码块作用域,你代码中
chat_id、text两个变量是定义在get_message异步处理函数内部的局部变量,但后续调用bot.send_message、打印返回结果的两行代码没有缩进,处于函数外的全局作用域。 - 对
get_message函数来说,内部定义完chat_id和text之后没有任何调用这两个变量的逻辑,函数执行完变量赋值就直接结束了,因此静态检测工具会判定两个局部变量定义后从未被使用。 - 除了静态警告外,当前代码直接运行还会触发实际报错:一是全局作用域无法访问函数内部的局部变量,会抛出
NameError;二是await关键字只能在异步函数内部使用,全局位置调用会直接触发语法错误。
修复方案
将发送消息、打印结果的代码缩进调整到get_message函数内部,和变量定义的代码保持同一缩进层级,同时去掉Bot实例定义行前多余的前置空格即可。
修复后的完整可运行代码:
from aiogram import Bot, Dispatcher, types from aiogram.utils import executor bot: Bot = Bot(token='替换为你自己的机器人TOKEN') dp = Dispatcher(bot) @dp.message_handler() async def get_message(message: types.Message): chat_id = message.chat.id text = "shiz ?" # 以下两行调整缩进,放到函数内部 sent_message = await bot.send_message(chat_id=chat_id, text=text) print(sent_message.to_python()) executor.start_polling(dp)
补充说明:写Python代码时建议统一使用4个空格作为缩进单位,不要混用Tab和空格,避免出现这类作用域错误。
内容的提问来源于stack exchange,提问作者keenanzz
相关产品推荐
相关产品推荐

