Бот Telegram периодически отправляет сообщения - PullRequest
0 голосов
/ 26 мая 2020

Я пытаюсь заставить своего бота периодически отправлять сообщение пользователю, но получаю сообщение об ошибке ниже. Что я делаю не так?

код:

import telegram.ext
from telegram.ext import Updater
from telegram.ext import CommandHandler

def callback_minute(update: telegram.Update, context: telegram.ext.CallbackContext):
    context.bot.send_message(chat_id= update.effective_chat.id, 
                             text='One message every minute')

def main():
    u = Updater('TOKEN', use_context=True)
    j = u.job_queue
    job_minute = j.run_repeating(callback_minute, interval=60, first=0)
    u.start_polling()

main()

Ошибка:

TypeError: callback_minute() missing 1 required positional argument: 'context'

1 Ответ

1 голос
/ 27 мая 2020

В руководстве по переходу к версии 12.0 есть небольшой раздел об обратных вызовах заданий. Он определяет только context (объект CallbackContent) в качестве параметра для функции обратного вызова, которая включает bot и job.

def callback_minute(context: telegram.ext.CallbackContext):
    context.bot.send_message(chat_id=SOMECHATID, text='One message every minute')

Как видите, вам нужно указать chat_id in SOMECHATID.

В wiki есть небольшой учебник. Если вы внимательно посмотрите, то увидите, что обратный вызов задания использует только context, обратный вызов другой функции предназначен для обработки команды /timer, вызванной кем-то, следовательно, используются update и context.

...