@kirufik

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

import telebot
from telebot import types 


bot = telebot.TeleBot('токен ')

a = 100


@bot.message_handler(commands=['start'])
def start(message):
    markup = types.ReplyKeyboardMarkup(resize_keyboard=True)
    btn2 = types.KeyboardButton("cklick")
    markup.add(btn2)
    bot.send_message(message.chat.id, text="Привет, {0.first_name}! жми кнопки)))".format(message.from_user), reply_markup=markup)





@bot.message_handler(content_types=['text'])
def func(message):
    if(message.text == "cklick"):
        bot.send_message(message.chat.id, text=a)
a = a - 1
        

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

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

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

В третьем случае тебе нужно разбираться, как работать с БД, но я бы посоветовал сначала подучить питон как таковой, без ботов.
Ответ написан
@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)
Ответ написан
@Everything_is_bad
очередной с общей глобальной переменной (и еще который не знает про global), тебе нужно минимум, переменную для каждого конкретного юзера, максимум - перманентность, способность сохранять их состояния между перезапусками бота
Ответ написан
Ваш ответ на вопрос

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

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