• Home
  • Aiogram
  • Создание бота на aiogram для обработки заявок на вступление в Telegram канал

Создание бота на aiogram для обработки заявок на вступление в Telegram канал

Image

Добро пожаловать на мой новый видеоурок на YouTube, где я подробно рассмотрю создание бота на aiogram, который будет автоматически принимать заявки на вступление в ваш Telegram канал. Мы разберем каждый шаг – от создания телеграм бота до обработки заявок и подачи их в канал.

В этом видеоуроке я покажу вам, как использовать Python и библиотеку aiogram для создания мощного и гибкого бота в Telegram. Мы начнем с создания телеграм бота и его настройки, а затем перейдем к обработке заявок на вступление.

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

import contextlib
import asyncio
from aiogram.types import ChatJoinRequest
from aiogram import Bot, Dispatcher, F
import logging
BOT_TOKEN = '5662047139:ABCDEFGHIJKLMNOPQRSTUVWXYZ'
CHANNEL_ID = -1001743627426
ADMIN_ID = 5528605206


async def approve_request(chat_join: ChatJoinRequest, bot: Bot):
    msg = f'<b>🔥 Рад приветствовать тебя в самом лучшем канале на свете.</b>\r\n\r\n' \
          f'👍 Спасибо за подписку. Теперь мы точно ничего интересного не пропустишь.\r\n\r\n' \
          f'⏱ Уже через 5 минут в канале будет новый пост. До скорого!'
    await bot.send_message(chat_id=chat_join.from_user.id, text=msg)
    await chat_join.approve()


async def start():
    logging.basicConfig(level=logging.DEBUG,
                        format="%(asctime)s - [%(levelname)s] -  %(name)s - "
                               "(%(filename)s).%(funcName)s(%(lineno)d) - %(message)s"
                        )

    bot: Bot = Bot(token=BOT_TOKEN, parse_mode='HTML')
    dp = Dispatcher()
    dp.chat_join_request.register(approve_request, F.chat.id ==CHANNEL_ID)

    try:
        await dp.start_polling(bot, allowed_updates=dp.resolve_used_update_types())
    except Exception as ex:
        logging.error(f'[Exception] - {ex}', exc_info=True)
    finally:
        await bot.session.close()


if __name__ == '__main__':
    with contextlib.suppress(KeyboardInterrupt, SystemExit):
        asyncio.run(start())
Image