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

如何在aiogram中让修改后的消息重新触发其他消息处理器?

问题解答

可行,你可以通过构造新的Update对象并让调度器重新处理的方式,实现让修改后的消息如同用户新发送的一样被其他处理器匹配,且不会触发原处理器。

实现思路

修改消息文本后,复制原消息和原Update的属性,替换为新的文本内容,然后调用调度器的process_update方法重新处理这个新的Update。这样调度器会从头遍历所有消息处理器,由于新文本已经移除了-g,不会触发当前的处理器,完全符合需求。

代码示例

@dp.message_handler(Text(contains='-g'))
async def g_replace(message: types.Message):
    # 处理文本替换
    new_text = message.text.lower().replace('-g', '').replace('г', 'ґ')
    
    # 复制原消息并替换文本
    new_message = message.copy()
    new_message.text = new_text
    
    # 复制原Update并替换消息内容
    new_update = message.update.copy()
    new_update.message = new_message
    
    # 让调度器重新处理新的Update
    await dp.process_update(new_update)

注意事项

  • 确保修改后的文本不包含'-g',这样就不会再次触发当前的处理器。
  • 如果你使用的是python-telegram-bot v20版本,构造Update对象的方式可能需要调整,比如通过Update(**new_update.dict())来创建新实例,核心逻辑保持一致。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.06 01:40:32