Задать вопрос
@LordOfTheNetwork
учусь Python

Прием заявок в группу тг, если пользователь есть в БД?

Написал такое условие. Получается если пользователь есть в бд db.user_exist (там соответствующий запрос) то, мы принимает пользователя в группу телеграм update.approve()

@dp.chat_join_request_handler()
async def join_request(update: types.ChatJoinRequest):
    if db.user_exist(update.from_user.id):
        await update.approve()
    else:
        await update.decline()
        await bot.send_message(update.from_user.id, text="Прежде чем начать общаться, вам необходимо нажать на кнопку /start")


если его нет в БД, то мы сначала аннулируем заявку update.decline() и отправим ему сообщение, о том, что нужно пройти регистрацию в боте. После регистрации ему приходит ссылка на группу, где снова должен нажать на кнопку "Подать заявку на вступление".

Проблема заключается в том, что update.decline() аннулирует заявку, но в телеграмме все равно пользователю пишет "Вы отправили заявку на вступление", хотя update.decline() сработал, потому что я как администратор в группе не вижу заявок на вступление...

В общем, можно ли как то это упростить? Может у меня какая-то ошибка в логике?..

*****75 YEARS LATER*****

еще мысль:
не смог разобраться и начал прокручивать еще варианты, у меня есть этапы регистрации в какой то определенной функции, когда пользователь дошел до определенного этапа, нужно одобрить заявку. Пример:

1. Ловим заявку в группу, отправляем сообщение от бота
@dp.chat_join_request_handler()
async def join_request(update: types.ChatJoinRequest):
    user_id=update.from_user.id
    await bot.send_message(user_id, 'Прежде чем начать общаться, вам необходимо нажать на кнопку /start')


2. Пользователь проходит этапы регистрации, после успеха мы одобряем заявку:
@dp.message_handler()
async def bot_message(message: types.Message):
/////////проходим этапы  регистрации////////////
await join_request_add() #вызываем функцию, которая добавляет пользователя в чат


3. Функция добавления пользователя в чат
async def join_request_add(update: types.ChatJoinRequest):
    await update.approve()
    await bot.send_message('Добро пожаловать в группу!')

*Естественно данная функция находится поверх всех хендлеров.

Но к сожалению не работает, при вызове функции await join_request_add() он просит от меня передать поз. аргументы. Но я не могу сообразить, какие? update: types.ChatJoinRequest ? что бы я не пробовал передать - не работает.
  • Вопрос задан
  • 141 просмотр
Подписаться 1 Простой 1 комментарий
Решения вопроса 1
@LordOfTheNetwork Автор вопроса
учусь Python
Решил вопрос:

1. Ловим заявку в группу, отправляем сообщение от бота
@dp.chat_join_request_handler()
async def join_request(update: types.ChatJoinRequest):
        await bot.send_message(update.from_user.id, text="Прежде чем начать общаться, вам необходимо нажать на кнопку /start")


2. Пользователь проходит этапы регистрации, после успеха мы одобряем заявку:
@dp.message_handler()
async def bot_message(message: types.Message):
/////////проходим этапы  регистрации////////////
await bot.approve_chat_join_request(chat_id, message.from_user.id) #добавляем пользователя в чат после всех этапов регистрации.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы