Как принять человека в закрытый телеграм-канал с помощью бота, который пишет пользователю первым?

Задача стоит в том, что пользователь отправляет заявку, бот ему пишет с предложением подтвердить запрос с помощью нажатия на инлайн кнопку (в дальнейшем планирую добавить между этими действиями дополнительные функции), после нажатия на кнопку запрос одобряется. Использую aiogram. Я видел ветки, где объясняется, как написать автоприем в одной функции, и моя трудность заключается в том, чтобы разбить это на две функции (реакция бота на заявку и принятие пользователя в тгк после нажатия пользователем на кнопку).

Буду безумно благодарен если поможете, тк навыков не хватает, чтобы разобраться самому.


Ответы (1 шт):

Автор решения: txello

Хендлером на заявку в закрытый канал является функция chat_join_request

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

from aiogram import Dispatcher, F
from aiogram.types import ChatJoinRequest

dp.chat_join_request.filter(F.chat.id == -123456789) # Принимаем заявки определённого канала

@dp.chat_join_request() # Хендлер на заявку в закрытый канал
async def test(update: ChatJoinRequest):
    await update.approve() # Бот одобряет заявку
    await update.bot.send_message(update.from_user.id,"Мы приняли Вашу заявку!") # и отправляет сообщение пользователю

Примечание: по правилам Telegram, бот не может писать первым пользователю. Исключением является принятие в закрытый канал.

→ Ссылка