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

如何在Pyrogram中同时运行my_account和my_bot客户端?

问题描述

同时运行my_account和my_bot两个Pyrogram客户端时功能异常,需求是用Client('my_account')执行任务,Client('my_bot')实现命令自动回复,现有代码无法实现预期效果:

import asyncio
from pyrogram.handlers.message_handler import MessageHandler

from pyrogram import Client, compose

api_id = 12345678
api_hash = "1234567891a23456b7891234cde5f67f"
bot_token = "1234567891:ABCD1EFG234HI5jKL6MNopqRSt7UVwXyz8A"


async def dummy(client, message):
    await message.reply("heeloo")


async def main():
    apps = [
        Client("my_account", api_id=api_id, api_hash=api_hash),
        Client("my_bot", api_id=api_id, bot_token=bot_token)
    ]
    await compose(apps)

    apps[0].add_handler(MessageHandler(dummy))


if __name__ == "__main__":
    asyncio.run(main())
问题分析与修复

你的代码有两个核心问题:

  • compose()是阻塞式调用,执行后会一直运行客户端直到停止,后续的add_handler代码永远不会被执行
  • 你把回复handler加到了账号客户端(apps[0]),但需求是让bot客户端自动回复,应该加到apps[1]

修正后的代码如下:

import asyncio
from pyrogram.handlers.message_handler import MessageHandler
from pyrogram import Client, compose, filters

api_id = 12345678
api_hash = "1234567891a23456b7891234cde5f67f"
bot_token = "1234567891:ABCD1EFG234HI5jKL6MNopqRSt7UVwXyz8A"


async def dummy(client, message):
    await message.reply("hello")


async def main():
    # 初始化客户端
    account_app = Client("my_account", api_id=api_id, api_hash=api_hash)
    bot_app = Client("my_bot", api_id=api_id, bot_token=bot_token)

    # 给bot客户端添加消息处理handler,可加过滤器限制触发条件
    # 比如只响应命令:filters.command("hello")
    bot_app.add_handler(MessageHandler(dummy, filters.all))

    # 同时运行两个客户端
    await compose([account_app, bot_app])


if __name__ == "__main__":
    asyncio.run(main())
关键说明
  1. handler添加时机:必须在调用compose()前完成handler注册,否则客户端启动后不会加载后续添加的handler
  2. 客户端对应关系:根据需求把自动回复逻辑绑定到bot客户端,账号客户端可单独处理其他任务
  3. 过滤器优化:建议通过filters模块设置触发条件(比如命令、特定聊天对象、消息类型等),避免无差别回复所有消息

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.15 00:22:43