【问题标题】:How to schedule telegraom bot send message with pytelegrambotapi如何使用 pytelegrambotapi 安排电报机器人发送消息
【发布时间】:2017-01-28 14:51:09
【问题描述】:

我正在使用带有 pytelegrambotapi 的 python 3.5.1,并尝试设置来自 bot 的通知,它应该每天在特定时间发送。

我真的不明白,怎么做,将不胜感激,如果有人给我看一个机器人的例子,它可以在每天特定时间向使用机器人的用户发送通知。

现在我尝试使用 schedule 模块,但问题是,我需要调用函数,发送通知,带有参数(用户 id 列表,其中 r 使用机器人),所以如果我尝试使用像这样:

schedule.every().day.at('17:00').do(send_test(user_id))

我得到一个错误:

TypeError: the first argument must be callable

【问题讨论】:

    标签: python python-3.x py-telegram-bot-api


    【解决方案1】:

    问题不在于电报库,而在于schedule
    do 方法接受一个函数,而不是调用函数的结果。您可以提供函数采用的其他参数作为do 的附加参数:

    schedule.every().day.at('17:00').do(send_test, user_id)
    

    【讨论】:

    • 谢谢,但现在看来,该机器人无法正常工作:pastebin.com/9a8223ay 所以,如果我尝试为机器人写一些东西,它什么也不做。我想,这是因为通知功能中的“While”循环,但我不知道如何在没有它的情况下使用模块调度。
    • @mrser 您需要将函数装饰器更改为@bot.message_handler(func=lambda m: True)。这将告诉模块这个处理程序应该处理每条消息。阅读更多关于 pytelegrambotapi here
    • 我的机器人正在工作文件,如果我不尝试使用日程安排模块添加通知,那么我当然可以让这个示例正常工作,但它不会帮助我解决问题。跨度>
    • @mrser 你的notificitation 函数永远不会结束,因为它包含一个while True-loop。所以bot.poll will.never 被调用
    • @mrser 通过更改bot.pollingnotifications 的顺序,您应该可以让它工作
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-03-19
    • 2019-10-30
    • 2017-09-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-12-10
    相关资源
    最近更新 更多