Aiogram框架报错:'State'类型对象无'Form'属性的技术问询
解决Aiogram中AttributeError: type object 'State' has no attribute 'Form'的问题
错误原因
你误用了State类来创建表单状态结构。在Aiogram框架中,用于定义多状态表单的是StateGroup类,State.Form并非框架提供的属性,这是导致报错的直接原因。此外你重复初始化了Bot和Dispatcher实例,这会引发后续的异步会话未关闭警告。
修复步骤
修正导入语句
补充导入StateGroup类,替换原有的单一State导入:from aiogram.dispatcher.filters.state import State, StateGroup重构Form类定义
让Form继承StateGroup,而非不存在的State.Form:# States class Form(StateGroup): id = State() text = State()移除重复的Bot/Dispatcher初始化
删除代码中重复的这两行,避免创建多个实例导致资源泄漏:bot = Bot(token=API_TOKEN) dp = Dispatcher(bot, storage=storage)
完整修正后的代码片段
import logging import aiogram.utils.markdown as md from aiogram import Bot, Dispatcher, types from aiogram.contrib.fsm_storage.memory import MemoryStorage from aiogram.dispatcher import FSMContext from aiogram.dispatcher.filters import Text from aiogram.types import ParseMode from aiogram.utils import executor from aiogram.dispatcher.filters.state import State, StateGroup # 修正导入 API_TOKEN = '5813603682:AAHxbhe4tMIC3GxxO1Pi26PGn-ovtxW8k9M' storage = MemoryStorage() bot = Bot(token=API_TOKEN) dp = Dispatcher(bot, storage=storage) logging.basicConfig(level=logging.INFO) # 移除重复的bot和dp初始化代码 # States class Form(StateGroup): # 继承StateGroup id = State() text = State() # 后续消息处理代码...
内容的提问来源于stack exchange,提问作者Богдан Савельев
相关产品推荐
相关产品推荐

