后端即时通讯API设计【免费下载链接】aiogramaiogram is a modern and fully asynchronous framework for Telegram Bot API written in Python using asyncio项目地址https://gitcode.com/gh_mirrors/ai/aiogram点击查看免费下载本文围绕 aiogram 框架中编辑 Checklist清单消息的EditMessageChecklist方法展开详细讲解其参数定义、底层类型结构、三种调用方式与源码实现原理并结合仓库内测试用例给出可直接运行的实战示例。读完本文你将掌握如何代表已连接的企业账户Business Account在 aiogram 中创建、编辑 Checklist 消息以及如何利用类型化参数构造与返回值完成完整业务流程。一、方法概览editMessageChecklist 是什么editMessageChecklist是 Telegram Bot API 提供的编辑型方法用于代表已连接的企业账户编辑一条 Checklist 消息。编辑成功后返回一个编辑后的Message对象即aiogram.types.message.Message其中会携带最新的Checklist内容。在 aiogram 中该 API 由EditMessageChecklist方法类封装其定义位于 aiogram/methods/edit_message_checklist.py声明要点如下继承自TelegramMethod[Message]即这是一个返回值类型为Message的 Telegram 方法对象类属性__api_method__ editMessageChecklist声明了对应的 Telegram API 方法名类属性__returning__ Message声明了调用成功后返回的解析类型。在 aiogram/client/bot.py 中Bot类提供了同名的便捷异步方法bot.edit_message_checklist(...)是日常开发中最常用的入口。二、参数详解与类型约束根据 EditMessageChecklist 源码 中的字段定义该方法共接收 5 个参数其中 4 个为必填参数类型必填说明business_connection_idstr是代表其发送消息的企业连接Business Connection的唯一标识符chat_idChatIdUnion是目标聊天标识可以是整数聊天 ID也可以是username格式的用户名message_idint是目标消息的唯一标识符checklistInputChecklist是新的清单内容JSON 序列化对象需以InputChecklist对象形式传入reply_markupInlineKeyboardMarkup \| None否消息的新内联键盘默认None不修改其中ChatIdUnion在 aiogram/types/chat_id_union.py 中被定义为类型别名int | str即同时接受数字聊天 ID 与username形式的字符串用户名。2.1 清单内容InputChecklistchecklist参数要求传入InputChecklist对象见 aiogram/types/input_checklist.py其字段定义如下字段类型必填约束与说明titlestr是清单标题实体解析后为 1-255 个字符taskslist[InputChecklistTask]是清单中的任务列表数量为 1-30 个parse_modestr \| Default \| None否标题中实体的解析模式默认继承 Bot 的Default(parse_mode)配置title_entitieslist[MessageEntity] \| None否标题中出现的特殊实体可替代parse_mode使用目前仅允许bold、italic、underline、strikethrough、spoiler、custom_emoji、date_time等实体others_can_add_tasksbool \| None否传入True表示其他用户可以向清单添加任务others_can_mark_tasks_as_donebool \| None否传入True表示其他用户可以标记任务为已完成或未完成2.2 任务项InputChecklistTask清单中的每个任务由InputChecklistTask描述见 aiogram/types/input_checklist_task.py字段类型必填约束与说明idint是任务的唯一标识符必须为正数且在清单当前所有任务标识中唯一textstr是任务文本实体解析后为 1-100 个字符parse_modestr \| Default \| None否任务文本中实体的解析模式默认继承 Bot 的Default(parse_mode)配置text_entitieslist[MessageEntity] \| None否任务文本中出现的特殊实体可替代parse_mode允许的实体类型同标题注意InputChecklistTask.id在编辑时必须保持唯一且为正数。由于本方法是对既有消息的整体替换式编辑若要修改某个任务通常需要传入包含该任务原有id的新任务对象。三、三种调用方式原文档核心用法docs/api/methods/edit_message_checklist.rst文档明确给出了本方法的三类标准用法以下逐一展开。3.1 作为 Bot 方法直接调用最常用的方式是通过Bot实例直接调用返回类型为Messageresult: Message await bot.edit_message_checklist( business_connection_idconnection_id, chat_id123456789, message_id42, checklistInputChecklist( titleUpdated Checklist, tasks[ InputChecklistTask(id1, textUpdated Task 1), InputChecklistTask(id2, textUpdated Task 2), ], ), )3.2 作为方法对象调用EditMessageChecklist也可以作为独立对象使用。导入方式有两种等价from aiogram.methods.edit_message_checklist import EditMessageChecklist # 或使用更简短的别名导入 from aiogram.methods import EditMessageChecklist指定具体 Bot 实例执行result: Message await bot(EditMessageChecklist(...))3.3 作为 Webhook 处理器的返回值在 Webhook 场景下可以直接将方法对象作为处理器返回值返回由框架代为执行return EditMessageChecklist(...)四、源码级原理方法对象如何被解析与执行从源码结构看aiogram 的所有方法类均继承自 aiogram/methods/base.py 中的TelegramMethod。其内部机制可概括为声明 API 方法与返回类型子类通过__api_method__声明对应的 Telegram API 方法名此处为editMessageChecklist通过__returning__声明返回结果应被解析为哪种类型此处为Message模型校验TelegramMethod基于 PydanticBaseModel其model_validator(modebefore)的remove_unset钩子会在字段校验前剔除UNSET哨兵值避免parse_mode等默认占位被误传执行与等待方法对象实现__await__若已挂载到某个 Bot 实例通过BotContextController注入可以直接awaitemit(bot)则等价于await bot(method)交由 Bot 完成 HTTP 请求与结果反序列化。而在 bot.py 中的快捷方法 内部实际逻辑是先构造EditMessageChecklist(...)方法对象再通过await self(call, request_timeoutrequest_timeout)执行并透传request_timeout参数用于控制单次请求超时。因此两种调用方式底层走的是同一条执行链。五、返回值与相关类型调用成功后返回Message对象其中与清单相关的字段定义在 aiogram/types/message.py 中checklist: Checklist | None若消息是清单则携带Checklist对象见 aiogram/types/checklist.py包含title、tasks、title_entities、others_can_add_tasks、others_can_mark_tasks_as_donechecklist_tasks_done: ChecklistTasksDone | None服务消息表示清单中部分任务被标记为已完成或未完成checklist_tasks_added: ChecklistTasksAdded | None服务消息表示有任务被添加到清单reply_to_checklist_task_id: int | None用于指示回复的是清单中的具体哪个任务。Message.content_type属性会依据self.checklist是否存在而返回ContentType.CHECKLIST便于在分发器Dispatcher中按内容类型路由处理。返回的Checklist.tasks是ChecklistTask对象列表见 aiogram/types/checklist_task.py每个任务额外包含完成状态信息completed_by_user完成任务的用户、completed_by_chat完成任务的聊天、completion_date完成时的 Unix 时间戳0 表示未完成。六、测试用例验证仓库中的测试 tests/test_api/test_methods/test_edit_message_checklist.py 完整覆盖了本方法的调用链可参考其确认参数构造方式与返回解析逻辑checklist InputChecklist( titleUpdated Checklist, tasks[ InputChecklistTask(id1, textUpdated Task 1), InputChecklistTask(id2, textUpdated Task 2), ], ) response: Message await bot.edit_message_checklist( business_connection_idtest_connection, chat_id42, message_id42, checklistchecklist, )测试使用MockedBot预置返回一个Message(message_id42, date..., chatChat(id42, typeprivate))随后断言调用结果与预置返回值一致。这验证了快捷方法会正确序列化参数并解析出Message类型的返回值。七、完整实战示例编辑带内联键盘的清单将三种要素清单内容、内联键盘、方法对象返回组合起来一个完整的更新清单并附带操作按钮的示例from aiogram import Bot from aiogram.methods import EditMessageChecklist from aiogram.types import ( InlineKeyboardMarkup, InlineKeyboardButton, InputChecklist, InputChecklistTask, ) bot Bot(tokenBOT_TOKEN) checklist InputChecklist( title购物清单已更新, tasks[ InputChecklistTask(id1, text购买牛奶), InputChecklistTask(id2, text购买面包), ], others_can_add_tasksTrue, # 允许其他用户添加任务 others_can_mark_tasks_as_doneTrue, # 允许其他用户勾选任务 ) markup InlineKeyboardMarkup( inline_keyboard[ [InlineKeyboardButton(text添加任务, callback_dataadd_task)], ] ) # 方式一Bot 快捷方法 edited: Message await bot.edit_message_checklist( business_connection_idconnection_id, chat_id123456789, message_id42, checklistchecklist, reply_markupmarkup, ) # 方式二方法对象 指定 bot 执行等价 edited await bot( EditMessageChecklist( business_connection_idconnection_id, chat_id123456789, message_id42, checklistchecklist, reply_markupmarkup, ) ) # 方式三Webhook 处理器中直接返回 # return EditMessageChecklist(...)注意reply_markup字段要求传入InlineKeyboardMarkup对象见 aiogram/types/inline_keyboard_markup.py其核心字段inline_keyboard: list[list[InlineKeyboardButton]]是一个二维按钮数组每行一个列表。八、注意事项与限制企业账户前置条件本方法要求以已连接的企业账户名义操作因此business_connection_id必须来自 Bot 已建立的企业连接通常通过BusinessConnection更新事件获得普通 Bot 场景无法使用该方法编辑 Checklist。消息定位chat_id与message_id必须指向一条真实的 Checklist 消息否则 Telegram API 会返回错误。任务 ID 唯一性传入的InputChecklistTask.id必须为正整数并在全部任务中保持唯一编辑时建议沿用原任务 ID 以便精准更新既有任务。实体与解析模式二选一标题与任务文本的parse_mode和*_entities字段互斥二者同时使用时以实体列表为准且实体类型仅支持有限的富文本类型。长度限制标题为 1-255 字符、单个任务文本为 1-100 字符、任务数量为 1-30 个均为实体解析后统计。九、延伸阅读方法实现aiogram/methods/edit_message_checklist.pyBot 快捷方法aiogram/client/bot.py方法基类机制aiogram/methods/base.py清单输入类型aiogram/types/input_checklist.py、aiogram/types/input_checklist_task.py返回类型aiogram/types/message.py、aiogram/types/checklist.py、aiogram/types/checklist_task.py测试用例tests/test_api/test_methods/test_edit_message_checklist.py发送清单的配套方法bot.send_checklist(...)定义于 aiogram/client/bot.py赞分享后端即时通讯API设计【免费下载链接】aiogramaiogram is a modern and fully asynchronous framework for Telegram Bot API written in Python using asyncio项目地址https://gitcode.com/gh_mirrors/ai/aiogram点击查看免费下载相关推荐aiogram 编辑临时消息媒体editEphemeralMessageMedia 方法全解析与实战指南aiogram 编辑临时消息媒体editEphemeralMessageMedia 方法全解析与实战指南 本文围绕 aiogram 框架对 Telegram后端即时通讯API设计aiogram 编辑临时消息标题editEphemeralMessageCaption方法完整实战指南aiogram 编辑临时消息标题editEphemeralMessageCaption方法完整实战指南 导读 editEphemeralMessageC后端即时通讯API设计aiogram 编辑消息回复键盘editMessageReplyMarkup 方法完全指南aiogram 编辑消息回复键盘editMessageReplyMarkup 方法完全指南 导读 本文围绕 aiogram基于 asyncio 的异步 Te后端即时通讯API设计上一篇TestDisk PhotoRec 数据恢复完整指南分区消失和文件丢失这样找回下一篇GDAL 3.11 原生支持 IEEE 16 位浮点类型Float16技术指南创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考