190 подписчиков

Телеграм Бот с сообщениями по расписанию

1,4K прочитали

Всем привет!

В данной статье я расскажу как написать телеграмм бота на языке Python при помощи библиотеки aiogram3b который будет отправлять сообщения по расписанию.

Я не буду писать как создать бота в Телеграмме, думаю что Вы уже умеете это делать.

Начнем сразу с кода:

1. Скачиваем необходимые библиотеки

  • pip install aiogram==3.0.0b6
  • pip install asyncio
  • pip install logging
  • pip install apscheduler

2. Пишем код запуска бота у меня это файл bot.py

import asyncio
import logging
from datetime import datetime

import aioschedule
from time_mes import send_message_cron

from aiogram import Bot, Dispatcher

from config_data.config import Config, load_config
from handlers import other_handlers
from apscheduler.schedulers.asyncio import AsyncIOScheduler


# Инициализируем логгер
logger = logging.getLogger(__name__)


# Функция конфигурирования и запуска бота
async def main() -> None:
# Конфигурируем логирование
logging.basicConfig(
level=logging.INFO,
format='%(filename)s:%(lineno)d #%(levelname)-8s '
'[%(asctime)s] - %(name)s - %(message)s'
)
# Выводим в консоль информацию о начале запуска
logger.info('Starting BOTV')

# Инициализируем бот и диспетчер
bot: Bot = Bot(token=<Ваш токен>, parse_mode='HTML')
dp: Dispatcher = Dispatcher()
# Сообщения по расписанию
scheduler = AsyncIOScheduler(timezone="Europe/Moscow")
scheduler.add_job(send_message_cron, trigger='cron', hour=10,
minute=00, start_date=datetime.now(), kwargs={'bot': bot})
scheduler.start()

# Регистрируем роутеры в диспетчере
dp.include_router(other_handlers.router)

# Пропускаем накопившиеся апдейты и запускаем polling
await bot.delete_webhook(drop_pending_updates=True)
await dp.start_polling(bot)


if __name__ == '__main__':
asyncio.run(main())

3. Пишем Hendler

В корневой папке проекта создаем папку hendlers а в ней файл other_handlers.py

from aiogram import Router

from aiogram.types import Message

from aiogram.filters import CommandStart

# Инициализируем роутер уровня модуля
router: Router = Router()

# Этот хэндлер срабатывает на команду /start
@router.message(CommandStart())
async def process_start_command(message: Message):
await message.answer(text='ПРИВЕТ!')

4. Пишем модуль обработки сообщений по расписанию

В корневой папке проекта создаем файл time-mes.py

async def send_message_cron(bot: Bot):
await bot.send_message(<id пользователя или группы или канала>, f'Это сообщение будет отправляться ежедневно в указанное время.')

В данном примере мы рассмотрели как создать бота с рассылкой сообщений по расписанию.

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