Как принять человека в закрытый телеграм-канал с помощью бота, который пишет пользователю первым?
Задача стоит в том, что пользователь отправляет заявку, бот ему пишет с предложением подтвердить запрос с помощью нажатия на инлайн кнопку (в дальнейшем планирую добавить между этими действиями дополнительные функции), после нажатия на кнопку запрос одобряется. Использую aiogram. Я видел ветки, где объясняется, как написать автоприем в одной функции, и моя трудность заключается в том, чтобы разбить это на две функции (реакция бота на заявку и принятие пользователя в тгк после нажатия пользователем на кнопку).
Буду безумно благодарен если поможете, тк навыков не хватает, чтобы разобраться самому.
Ответы (1 шт):
Хендлером на заявку в закрытый канал является функция 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, бот не может писать первым пользователю. Исключением является принятие в закрытый канал.