• Как сделать, чтобы с каждым нажатием кнопки бот отнимал от 100 один, то есть писал: 99 98 97 96 95...?

    @alekssamos
    Программист любитель
    Так-с, а если хранить счётчик прямо в кнопке, в callback data? Мне кажется, будет отлично!
    Не проверял, возможно не работает,
    просто как идея.
    import telebot
    from telebot import types 
    
    a = 100
    
    bot = telebot.TeleBot('токен ')
    
    def make_buttons(a):
        markup = types.InlineKeyboardMarkup()
        markup.row_width = 1
        markup.add(types.InlineKeyboardButton(text="click", callback_data="cb_minus_"+str(a)))
        return markup
    
    @bot.message_handler(commands=['start'])
    def start(message):
        bot.send_message(
            message.chat.id,
            text="Привет, {0.first_name}! жми кнопки)))".format(message.from_user),
            reply_markup=make_buttons(a)
        )
    
    @bot.callback_query_handler(func=lambda call: print(call.data))
    @bot.callback_query_handler(func=lambda call: call.data.startswith('cb_'))
    def callback_query(call):
        print(call.data)
        _, op, digit = call.data.split("_")
        digit=int(digit)
        if op=="minus":
            digit-=1
        bot.edit_message_reply_markup(
            call.message.chat.id,
            call.message.id,
            make_buttons(digit)
        )
        bot.answer_callback_query(call.id, str(digit), show_alert=True)
    
    
    bot.polling(none_stop=True)
    Ответ написан
    1 комментарий
  • Как сделать, чтобы с каждым нажатием кнопки бот отнимал от 100 один, то есть писал: 99 98 97 96 95...?

    Vindicar
    @Vindicar
    RTFM!
    1. Читай правила сайта. Оформление кода кнопкой </> обязательно, иначе вопрос могут удалить.
    Не говоря уже о том, что сейчас твой код нечитаем.
    2. Вместо лирики в духе "АААААА СПОСИТЕ ПАМАГИТЕ" лучше бы уточнил, какую именно задачу ты решаешь. Тебе нужно, чтобы счётчик был общий у всех пользователей бота, или чтобы у каждого пользователя был свой счётчик? Если свой, то должен ли счётчик переживать перезапуск бота?

    В первом случае читай про глобальные переменные в питоне и ключевое слово global.

    Во втором случае тебе нужно хранить значения счётчика так, чтобы можно было различать пользователей. Например, в виде словаря "id пользователя - значение счётчика". Читай про словари, а также про глобальные переменные.

    В третьем случае тебе нужно разбираться, как работать с БД, но я бы посоветовал сначала подучить питон как таковой, без ботов.
    Ответ написан
    5 комментариев
  • Как сделать, чтобы с каждым нажатием кнопки бот отнимал от 100 один, то есть писал: 99 98 97 96 95...?

    @Everything_is_bad
    очередной с общей глобальной переменной (и еще который не знает про global), тебе нужно минимум, переменную для каждого конкретного юзера, максимум - перманентность, способность сохранять их состояния между перезапусками бота
    Ответ написан
    3 комментария