Написал такое условие. Получается если пользователь есть в бд
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 ? что бы я не пробовал передать - не работает.