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

Aiogram框架报错:'State'类型对象无'Form'属性的技术问询

解决Aiogram中AttributeError: type object 'State' has no attribute 'Form'的问题

错误原因

你误用了State类来创建表单状态结构。在Aiogram框架中,用于定义多状态表单的是StateGroup类,State.Form并非框架提供的属性,这是导致报错的直接原因。此外你重复初始化了Bot和Dispatcher实例,这会引发后续的异步会话未关闭警告。

修复步骤

  1. 修正导入语句
    补充导入StateGroup类,替换原有的单一State导入:

    from aiogram.dispatcher.filters.state import State, StateGroup
    
  2. 重构Form类定义
    让Form继承StateGroup,而非不存在的State.Form:

    # States
    class Form(StateGroup):
        id = State()
        text = State()
    
  3. 移除重复的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,提问作者Богдан Савельев

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.06 13:01:23