@LightLion

Telegram bot как забанить пользователя в инлайне?

Не получается сделать бан для пользователя в инлайне. Я использую такую систему бана - добавлять id пользователя в таблицу бан mysql Перед тем как ответить на действие пользователя, он проверяет по таблице не состоит ли его id в бане. На обычные кнопки или запросы по вводу данных все работает нормально. Ты добавил пользователя в таблицу, и ему сразу выдает сообщение "Ты забанен" на любое действие. Но с инлайном это не работает. Сам бан я настроил но если забаненный пользователь не будет перезапускать бота или нажимать обычные кнопки, а только дальше пользоваться инлайном, тогда бан инлайна не выскочит.

banam = []

@bot.message_handler(commands = ['start'])
def first(message):
    p = ('SELECT user_id FROM blockuser')
    cursor.execute(p)
    for p in cursor:
        banam.append(p[0])
    ban = list(set(banam))
    if int(message.chat.id) in ban:
        bot.send_message(message.chat.id, "Вы забанены")

#Сам инлайн
@bot.callback_query_handler(func=lambda c: True)
def inlin(c):
    ban = list(set(banam))
    try:
        if c.data == 'nazad':
            if c.message.chat.id in ban:
                bot.send_message(c.message.chat.id, 'BAN')
            else:
                bot.edit_message_media(media=types.InputMedia(type='photo', media=const.PHOTOINLINE1),
                                   chat_id=c.message.chat.id, message_id=c.message.message_id, reply_markup=inline2()) 

def inline2():
    knopk2 = types.InlineKeyboardMarkup()
    but_1 = types.InlineKeyboardButton(text='Картинка 1', callback_data='kar11')
    but_2 = types.InlineKeyboardButton(text='Картинка 2', callback_data='kar2')
    but_3 = types.InlineKeyboardButton(text='Назад', callback_data='nazad')
    but_4 = types.InlineKeyboardButton(text='Выбор', callback_data='vybor')
    knopk2.add(but_1)
    knopk2.add(but_2)
    knopk2.add(but_3)
    knopk2.add(but_4)
    return knopk2
  • Вопрос задан
  • 749 просмотров
Пригласить эксперта
Ответы на вопрос 1
MinTnt
@MinTnt
Дак для клавиатуры не сделано проверки на нахождение в базе забаненых.

P.s. А вообще, довольно странная структура кода. Если пользователей будет много, это может и напрягать систему, и отклика будет ждать дольше
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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