如何为部署在Heroku上的电报Bot编写定期重复功能

时间:2019-03-09 09:59:09

标签: python python-3.x heroku scheduled-tasks telegram-bot

我编写了一个函数,该函数应在特定时间向用户发送消息:

def send_wishes_loop():
    connection = psycopg2.connect(...)
    cursor = connection.cursor()
    hour = datetime.datetime.now().hour  

    cursor.execute("""SELECT userid FROM usersdata WHERE morning_time={}""".format(hour))
    for userid in cursor:
        if userid:
            bot.send_message(userid[0] , random.choices(wishes_list.good_morning_wishes))
    ....

    cursor.close() 
    connection.commit() 
time.sleep((61-datetime.datetime.now().minute)*60))

并将其放在单独的线程中

t1 = Thread(target=bot.polling())
t2 = Thread(send_wishes_loop())
t1.start()
t2.start()

但不起作用。 如何实现此功能并对其进行修复? 在heroku文档中,我读到了有关Heroku Scheduler的信息, 但不知道如何使用。拜托,帮帮我...

1 个答案:

答案 0 :(得分:0)

一种选择是使用Heroku Scheduler。

我建议您定义一个脚本(使用if __name__ == '__main__':)来调用函数send_wishes_loop()(最后一行不包含sleep)。

您将脚本添加到Heroku Scheduler作为新作业。 如您在文档中所见,有一个不错的Web界面,您只需要添加脚本调用(可能类似于python your_script.py之类的内容)并设置时间间隔即可。