电报机器人 api python run_daily 方法 [英] telegram bot api python run_daily method

查看:66
本文介绍了电报机器人 api python run_daily 方法的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

嘿,我想每天运行一个电报机器人,所以我尝试了不同的东西.

Hey i am trying to run a telegram bot on a daily base so i tried different things.

updater = Updater(<botkey>, use_context=True)
dp = updater.dispatcher
dp.job_queue.run_daily(pollen, datetime.time(hour=20, minute=9), days=(0, 1, 2, 3, 4, 5, 6))
dp.add_error_handler(error)
updater.start_polling()
updater.idle()

def pollen(update, context):
    bot.send_message(chat_id=chat_id, text='text')

updater = Updater(<botkey>, use_context=True)
dp = updater.dispatcher
dp.add_handler(CommandHandler('start', creatJobs, pass_job_queue=True, pass_chat_data=True))
dp.add_error_handler(error)
updater.start_polling()
updater.idle()

def pollen(update, context):
    bot.send_message(chat_id=chat_id, text='text')


def creatJobs(update, context):
    new_job = context.job_queue.run_daily(pollen, datetime.time(hour=20, minute=9), days=(0, 1, 2, 3, 4, 5, 6), context=chat_id)
    context.chat_data['job'] = new_job

updater = Updater(<botkey>, use_context=True)
dp = updater.dispatcher
dp.add_handler(CommandHandler('start', creatJobs, pass_job_queue=True, pass_chat_data=True))
dp.add_error_handler(error)
updater.start_polling()
updater.idle()

def pollen(update, context):
    bot.send_message(chat_id=chat_id, text='text')

def creatJobs(update, context):
    context.job_queue.run_daily(reset, pollreset, days=(0,1,2,3,4,5,6))

但没有任何效果,我正在 Windows 和 python 3.8 上开发进口总是一样的

but nothing works, i am developing on windows and python 3.8 imports always the same

import logging, re, datetime, time

import telegram
from telegram import InlineKeyboardButton, InlineKeyboardMarkup, Location
from telegram.ext import (Updater, CommandHandler, MessageHandler, Filters, ConversationHandler, CallbackQueryHandler)

推荐答案

由于错误 单击此处 如果 job.run_daily 未提供时区,则 Job_queue 将跳过作业.

Due to a bug click here Job_queue is skipping job if timezone is not provided for job.run_daily.

在您的代码中添加时区,它将完美运行.

Add timezone in your code it will run perfectly.

datetime.time(hour=6, minute=27, tzinfo=pytz.timezone('Asia/Kolkata'))

如果有任何错误,请参考以下代码.

Refer the below code if you get any error.

from telegram.ext import Updater, CommandHandler
import logging, datetime, pytz

logging.basicConfig(level=logging.INFO,
                    format='%(asctime)s - %(name)s - %(levelname)s - %(message)s')
logger = logging.getLogger()


def start(update, context):
    context.job_queue.run_daily(msg,
                                datetime.time(hour=6, minute=27, tzinfo=pytz.timezone('Asia/Kolkata')),
                                days=(0, 1, 2, 3, 4, 5, 6), context=update.message.chat_id)

def msg(context):
    context.bot.send_message(chat_id=context.job.context, text='text')

def error(update, context):
    """Log Errors caused by Updates."""
    logger.warning('Update "%s" caused error "%s"', update, context.error)


def main():
    updater = Updater( < YOUR_TOKEN > , use_context=True)
    dp = updater.dispatcher
    dp.add_handler(CommandHandler("start", start, pass_job_queue=True))
    dp.add_error_handler(error)

    updater.start_polling()
    updater.idle()

if __name__ == '__main__':
    main()

这篇关于电报机器人 api python run_daily 方法的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆