(python) Telegram bot- how to send messages periodically?

python-telegram-bot examples
telegram bot auto send message
python-telegram bot send message to channel
python telegram send message
python telegram bot tutorial
python-telegram bot messagehandler
telegram bot send message to user
telegram bot send message to group

I have a dilemma regarding my telegram bot. Let's say I have to create a function that will ask, every user connected to the bot, one time per week/month, a question:

def check_the_week(bot, update):
reply_keyboard = [['YES', 'NO']]
bot.send_message(
    chat_id=update.message.chat_id,
    text=report,

    reply_markup=ReplyKeyboardMarkup(reply_keyboard, one_time_keyboard=True))  # sends the total nr of hours
update.reply_text("Did you report all you working hour on freshdesk for this week?",
                  ReplyKeyboardMarkup(reply_keyboard, one_time_keyboard=True))

if update.message.text == "YES":
    update.message.reply_text(text="Are you sure?",
                              reply_markup=ReplyKeyboardMarkup(reply_keyboard, one_time_keyboard=True))

    # Asks confirmation
    if update.message.text == "YES":
        update.message.reply_text(text="Thank you for reporting your working hours in time!")

    elif update.message.text == "NO":
        update.message.reply_text(text="Please, check you time reports and add missing")

elif update.message.text == "NO":
    update.message.reply_text(text="Please, check you time reports and add missing")

I want this function to be triggered every week. I was thinking about using JobQueue. The problem is that in this case the function should have two parameters- bot AND job_queue, but no update:

def callback_30(bot, job):
    bot.send_message(chat_id='@examplechannel',
    text='A single message with 30s delay')

j.run_once(callback_30, 30)

How can I create a Job Scheduler (or any other solution) in telegram bot to be trigger my function once a week? p.s. No "while True"+time.sleep() solutions please. The loop just stuck forever, I tried it.

You need to use the context parameter when defining the job in your function. Look at this example:

   from telegram.ext import Updater, CommandHandler, MessageHandler,    Filters, InlineQueryHandler


def sayhi(bot, job):
    job.context.message.reply_text("hi")

def time(bot, update,job_queue):
    job = job_queue.run_repeating(sayhi, 5, context=update)

def main():
    updater = Updater("BOT TOKEN")
    dp = updater.dispatcher
    dp.add_handler(MessageHandler(Filters.text , time,pass_job_queue=True))


    updater.start_polling()
    updater.idle()

if __name__ == '__main__':
    main()

Now in your call back function wherever you need update. type job.context instead.

A python script to send messages to a telegram user. Useful to notify , bot.py. #This script is independet of lib or python version (tested on python 2.7 and Hi, can this script work by sending periodic messages to a telegram bot? In the code above we have a function named “telegram_bot_sendtext()” with 1 parameter “bot_message”, this is the setup. At row 14, the function is called, with the message to send

To send messages periodically, you can use JobQueue Extention from python-telegram-bot

Here is an example

from telegram.ext import Updater, CommandHandler

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

def callback_timer(bot, update, job_queue):
    bot.send_message(chat_id=update.message.chat_id,
                      text='Starting!')
    job_queue.run_repeating(callback_alarm, 5, context=update.message.chat_id)

def stop_timer(bot, update, job_queue):
    bot.send_message(chat_id=update.message.chat_id,
                      text='Stoped!')
    job_queue.stop()

updater = Updater("YOUR_TOKEN")
updater.dispatcher.add_handler(CommandHandler('start', callback_timer, pass_job_queue=True))
updater.dispatcher.add_handler(CommandHandler('stop', stop_timer, pass_job_queue=True))

updater.start_polling()

the /start command will start the JobQueue and will send a message with an interval of 5 seconds, and the queue can be stopped by /stop command.

telegram.Message — Python Telegram Bot 12.8 documentation, You can only edit messages that the bot sent itself (i.e. of the bot.send_* family of codepoint pairs, which some versions of Python don't handle automatically. Writing the Code. We’re going to use a wrapper to deal with the Telegram API: python-telegram-bot will do the trick. Create a new file, requirements.txt, and write: python-telegram-bot==12.2.0

Try to use cron. You just need to store new chat ids somewhere (file, database ect.) and read it from your script. for example to run send_messages.py everyday at 9pm (21:00):

0 21 * * * python send_messages.py

Automate a Telegram Bot to Send Daily Messages in Fewer Than 40 , Automate a Telegram Bot to Send Daily Messages in Fewer Than 40 Lines of Python Code. Create a Telegram bot, schedule it to send a daily� Our code will periodically make a request to retrieve all new messages to our Bot from Telegram's servers, and will then send responses to each message as necessary. In order to register a bot with Telegram, you first need to create a personal Telegram account.

How to create a Telegram bot, and send messages with Python, Now you are all set, run the code, and enjoy receiving messages from yourself :) Sending messages regularly. If you indeed created a trading� I hope that you have learned how to create a simple echo bot using python-telegram-bot. We will move to complex bots in the upcoming tutorials. Before that, if you have any queries send it below.

How to send messages to all users that interact with a Telegram bot , Tagged with automation, python, telegrambot, database. to store every user's chat id and to send the update message via Telegram's API. To prevent spam, bots cannot initiate a chat, so we need to send it a message to enable the bot to message us back. We will read this message via the Telegram API to get the chat_id in the next step.

telegram-send � PyPI, Send messages and files over Telegram from the command-line. Alert on completion of shell commands; Periodic messages with cron; Supervisor process state notifications; Usage from Python; Cron job output; ASCII pictures Create a bot by talking to the BotFather, create a public channel and add your bot as� Bot will simply parse latest content and send it back to you via Telegram. Our app will consist of django app and its source code is available on my github as planetpython_telegrambot repo. Feel free to fork and do whatever you want to do :) Creating a Telegram Bot. First of all in order to create a telegram bot you have to have a Telegram account.

Comments
  • You can pass anything (for example update) into the context parameter when you use run_once.
  • I do store the chat_ids. The problem is that I have to catch somehow the response/confirmation from the telegram user ( update.message.text) and I can't do that without an "Update" object.
  • You don’t need to use cron because the library you use already has jobs. You are passing update but you can’t use update cause actually there are no updates running the function but the job parameter.