Поиск
9 мес.

Создание напоминалки в Telegram боте с отправкой сообщений по расписанию

Чтобы разработать бота-напоминалку в Telegram, который будет отправлять сообщения в заранее определенное время, потребуется использование библиотеки для работы с Telegram API, такой как python-telegram-bot, и возможностей Python для работы с временем и задачами, которые могут быть выполнены, например, с помощью библиотеки schedule.

Все материалы категории
Все материалы

Для хранения данных о событиях и времени их напоминания можно использовать базу данных, […]

Чтобы разработать бота-напоминалку в Telegram, который будет отправлять сообщения в заранее определенное время, потребуется использование библиотеки для работы с Telegram API, такой как python-telegram-bot, и возможностей Python для работы с временем и задачами, которые могут быть выполнены, например, с помощью библиотеки schedule. Для хранения данных о событиях и времени их напоминания можно использовать базу данных, в данном случае разработчик выбрал SQLite

Установка библиотек
Установка необходимых библиотек производится с помощью pip:


pip install python-telegram-bot schedule

Создание и запуск бота-напоминалки
Бот будет обрабатывать команды от пользователей для создания напоминаний, сохранять их в базу данных SQLite и запускать на выполнение в соответствии с указанным временем.

Пример кода для основного функционала бота-напоминалки с использованием python-telegram-bot:


import datetime
import sqlite3
import schedule
import time
from telegram import Update
from telegram.ext import Updater, CommandHandler, MessageHandler, Filters, CallbackContext

# Инициализация бота с токеном, полученным от BotFather
TOKEN = 'ВАШ_TELEGRAM_BOT_TOKEN'
updater = Updater(token=TOKEN, use_context=True)
dispatcher = updater.dispatcher

# Создание или подключение к базе данных SQLite
conn = sqlite3.connect('reminders.db')
cursor = conn.cursor()
cursor.execute('''CREATE TABLE IF NOT EXISTS reminders
             (id INTEGER PRIMARY KEY, user_id INTEGER, time TEXT, message TEXT)''')
conn.commit()

def remind(context: CallbackContext):
    """Функция отправки напоминания пользователю."""
    job = context.job
    context.bot.send_message(job.context['user_id'], text=job.context['message'])

def add_reminder(update: Update, context: CallbackContext):
    """Обработчик команды для добавления напоминания."""
    user_id = update.message.chat_id
    try:
        # Пользователь отправляет данные в формате "чч:мм текст_напоминания"
        time_str, message = update.message.text.split(' ', 1)
        reminder_time = datetime.datetime.strptime(time_str, '%H:%M').time()
        # Сохраняем напоминание в базу данных
        cursor.execute("INSERT INTO reminders (user_id, time, message) VALUES (?, ?, ?)",
                      (user_id, reminder_time, message))
        conn.commit()
        # Добавляем задачу в расписание
        schedule.every().day.at(time_str).do(remind, 
             context={'user_id': user_id, 'message': message}).tag(str(cursor.lastrowid))
        update.message.reply_text(f'Напоминание "{message}" установлено на {reminder_time}')
    except (ValueError, IndexError):
        update.message.reply_text('Пример использования: /remind 15:30 Позвонить другу')

# Обработчики команд
dispatcher.add_handler(CommandHandler('remind', add_reminder))

# Запуск бота
updater.start_polling()

# Запуск цикла проверки расписания
while True:
    schedule.run_pending()
    time.sleep(1)

В этом примере создается обработчик команд /remind, который принимает время и текст напоминания от пользователя, сохраняет его в базу данных и устанавливает расписание для вызова функции remind в заданное время. Функция remind отвечает за отправку сообщения пользователю.

Важные моменты
— Здесь описан только базовый функционал и не включена логика удаления или редактирования существующих напоминаний.
— Перед использованием замените значок ВАШ_TELEGRAM_BOT_TOKEN на реальный токен вашего бота.
— SQLite хранит данные о напоминаниях между сеансами работы бота, но schedule не сохраняет состояние после перезапуска программы, что необходимо учитывать.

4 мес.

Глава ВТБ призывает засекретить информацию о международных расчетах России

Российская экономика сталкивается с беспрецедентным санкционным давлением, и поиск обходных путей становится критически важным.

Российская экономика сталкивается с беспрецедентным санкционным давлением, и поиск обходных путей становится критически важным.

Глава ВТБ призывает засекретить информацию о международных расчетах России

• 4 мес.

Россиянам грозит штраф до 50 тыс. рублей за оскорбления в домовых чатах

Защита от оскорблений теперь действует и в интернет-пространстве, включая мессенджеры жильцов многоквартирных домов

Всемирный банк вернул Россию в группу стран с высоким уровнем дохода

Экономический рост позволил России вернуться в категорию стран с высоким уровнем дохода по классификации Всемирного банка.

• 4 мес.

Land Rover представил Defender Octa: самый быстрый внедорожник в серии разгоняется до 100 км/ч за 3,8 секунды

Британский автопроизводитель бьет рекорды скорости в сегменте внедорожников.

Поиск по сайту

Поиск

Вход в аккаунт