Всем привет!
В данной статье я расскажу как написать телеграмм бота на языке 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'Это сообщение будет отправляться ежедневно в указанное время.')
В данном примере мы рассмотрели как создать бота с рассылкой сообщений по расписанию.
Подписывайтесь на мой канал и я буду рассказывать как работать с Телеграм и зарабатывать на создании Ботов.