@Mansurkolonki

Капча-бот для телеграм канала, как реализовать?

@bot.message_handler(content_types=["new_chat_members"])
def new_member(message):
    for user in message.new_chat_members:
        captcha_manager.restrict_chat_member(bot, message.chat.id, user.id)
        captcha_manager.send_random_captcha(bot, message.chat, user, timeout=60)



@bot.callback_query_handler(func=lambda callback: True)
def on_callback(callback):
    captcha_manager.update_captcha(bot, callback)



@captcha_manager.on_captcha_correct
def on_correct(captcha):
    bot.send_message(captcha.chat.id, "Congrats! You solved the CAPTCHA!")
    captcha_manager.unrestrict_chat_member(bot, captcha.chat.id, captcha.user.id)
    captcha_manager.delete_captcha(bot, captcha)


@captcha_manager.on_captcha_not_correct
def on_not_correct(captcha):
    if (
        captcha.incorrect_digits <= MAX_WRONG_DIGITS
        and captcha.previous_tries < MAX_TRIES
    ):
        captcha_manager.refresh_captcha(bot, captcha)
    else:
        bot.kick_chat_member(
            captcha.chat.id,
            captcha.user.id,
            until_date=(datetime.now() + timedelta(hours=1)),
        )
        bot.send_message(
            captcha.chat.id,
            f"{captcha.user.first_name} failed solving the CAPTCHA and was kicked!",
        )
        captcha_manager.delete_captcha(bot, captcha)



@captcha_manager.on_captcha_timeout
def on_timeout(captcha):
    bot.kick_chat_member(
        captcha.chat.id,
        captcha.user.id,
        until_date=(datetime.now() + timedelta(hours=1)),
    )
    bot.send_message(
        captcha.chat.id,
        f"{captcha.user.first_name} did not solve the CAPTCHA and was kicked!",
    )
    captcha_manager.delete_captcha(bot, captcha)


bot.polling()

Есть такой код и он в теории рабочий, но он предназначен для супергрупп, а мне нужен для канала.
Как реализоваться тоже самое для канала? Или проще сделать так, чтоб люди получали ссылку на канал через чат с ботом?
  • Вопрос задан
  • 1941 просмотр
Решения вопроса 1
@jkovalenko
1) доступ к каналу -приватный, одобрять только админу
2) бота в админы
3) я хз как с телеботом(имхо это вообще не оч библиотека для бота), но у питон-телеграм-бот есть метод approve_chat_join_request, который автоматом одобряет пользователя. крч, действия такие:
кэтчишь запрос в тг канал-получаешь из запроса айди-пишешь этому айди с бота-если капча поавильная, то через него же одобряешь.

поройся в документации телебота, мб там такое же есть, но если не критично, то python-telegram-bot мой фаворит
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
@nsk-realty
Боты с таким функционалом уже существуют в Телеграм. Для примера, https://t.me/Captcha_Rubot
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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