在没有任何形式触发的情况下将更新发送到特定频道

Send updates to specific channel without any form of trigger

当我的算法发生事件时,我想将更新分派到特定频道。我的代码看起来像这样

def _create_telegram_dispatcher():
    """Start the bot."""
    # Create the Updater and pass it your bot's token.
    updater = Updater("TOKEN")

    # Get the dispatcher to register handlers
    dispatcher = updater.dispatcher

    # on non command i.e message - echo the message on Telegram
    dispatcher.add_handler(MessageHandler(Filters.text & ~Filters.command, echo))

    # Start the Bot
    updater.start_polling()

    # Run the bot until you press Ctrl-C or the process receives SIGINT,
    # SIGTERM or SIGABRT. This should be used most of the time, since
    # start_polling() is non-blocking and will stop the bot gracefully.
    updater.idle()

def _run():
    broker = BROKER()

    loop = asyncio.get_event_loop()
    loop.run_until_complete(_client_thread(api))

if __name__ == "__main__":
    self._create_telegram_dispatcher()
    self._run()

因此,当代理处于 运行 时,如果满足条件,我希望我的机器人在频道上发送更新,而不需要有人先与其交谈。从我初始化的 Broker class 访问电报机器人并让它向特定频道发送消息的方法是什么?

假设您自己实现了 BROKER class,您可以向其添加参数 bot 并将 updater.bot 传递给它。这将需要您稍微修改 _create_telegram_dispatcher,即不要在函数内部直接调用 updater.idle()

或者,您可以在代理中实例化一个新的 Bot 实例。

编辑:一旦您有一个可用的机器人实例,发送消息就像 (self.)bot.send_message(…) 一样简单 - 有关更多详细信息,请参阅 here