@Vitaliy445

Какими еще способами можно обновлять переменные о пользователе в Telegram(telebot)?

У меня проблемка, каким еще способом можно обновить переменные о пользователе
Проблема в том, что переменные присваиваются только когда нажать /start

@bot.message_handler(commands=['start'])
def welcome(message):
    global chat_user_id, name_user, user_id
    chat_user_id = message.chat.id
    user_id = message.from_user.id
    name_user = message.from_user.first_name

Вот как все в боте
611277cf3a8fc489323126.jpeg

Ну и кнопки обрабатывет функция
@bot.callback_query_handler(func=lambda call: True)
def check(call):
    global chat_user_id, name_user, user_id
    if call.message:
        if call.data == "edit":
            answer1()   
        elif call.data =="show"
           answer2()


Как вы уже поняли, когда ботом будут пользоватся ему будет кранты. Все ответы пойдут тому кто последний нажал /start

И вот вопрос
Как мне обновлять переменные пользователя, возможно ли это в этих условиях кода?

Знаю что словарь\list помогает в этой ситуации, можете поподробнее рассказать про этот способ(Как присваивать\обновлять переменную и как обращаться к ней). Буду очень благодарен за ответ

Код

# -*- coding: utf-8 -*-
import telebot
import config
from telebot.apihelper import ApiTelegramException

from telebot import types
from array import *

bot = telebot.TeleBot(config.TOKEN)
chat_user_id = 0  # ID чата пользователя
user_id = 0
name_user = ""
chat_id_channel1 = -100.....
chat_id_channel2 = -100....
chat_id_channel3 = -100....
chat_id_channel4 = -100...
chat_id_channel5 = -100....


@bot.message_handler(commands=['start'])
def welcome(message):
    global chat_user_id, name_user, user_id
    chat_user_id = message.chat.id
    user_id = message.from_user.id
    name_user = message.from_user.first_name
    # keyboard
    markup = types.InlineKeyboardMarkup(row_width=1)
    item1P = types.InlineKeyboardButton("Кнопка под сообщением", callback_data='want')
    markup.add(item1P)

    bot.send_message(message.chat.id,
                     "Текст".format(
                         message.from_user, bot.get_me()),
                     parse_mode='html')

    bot.send_message(message.chat.id,
                     "Текст".format(
                         message.from_user, bot.get_me()),
                     parse_mode='html', reply_markup=markup)


def answer1():
    img = open('Money.jpg', 'rb')
    bot.send_photo(Chat_user_id, img,
                   caption="Текст", parse_mode="Markdown")
    markup = types.InlineKeyboardMarkup(row_width=1)
    item1P = types.InlineKeyboardButton("Кнопка под сообщением", callback_data='nextquest')
    markup.add(item1P)
    bot.send_message(Chat_user_id,
                     Name_user + "Текст",
                     parse_mode='html', reply_markup=markup)


def answer2():
    bot.send_message(Chat_user_id, "Текст")
    markup = types.InlineKeyboardMarkup(row_width=1)
    item1P = types.InlineKeyboardButton("Кнопка под сообщением", callback_data='watchsub')
    markup.add(item1P)
    bot.send_message(Chat_user_id, "Текст " ,parse_mode='html', reply_markup=markup)


def answer3():
    bot.send_message(Chat_user_id, 'Тескт')
    bot.send_message(Chat_user_id, 'Тескт')
    markup = types.InlineKeyboardMarkup(row_width=1)
    item1P = types.InlineKeyboardButton("Кнопка под сообщением", callback_data='nextquest2')
    markup.add(item1P)
    img = open('Description.jpg', 'rb')
    bot.send_photo(Chat_user_id, img,
                   caption="Тескт", parse_mode="Markdown", reply_markup=markup)


def answer4():
    bot.send_message(Chat_user_id, 'Текст')
    markup = types.InlineKeyboardMarkup(row_width=1)
    item1P = types.InlineKeyboardButton("Кнопка под сообщением", callback_data='nextquest3')
    markup.add(item1P)
    img = open('adPhoto.jpg', 'rb')
    bot.send_photo(Chat_user_id, img,
                   caption="Текст ", parse_mode="Markdown")

    bot.send_message(chat_user_id, 'Текст»', reply_markup=markup)


def proverka(..., ...):
    if ...
    ...
    else:
        answer3()


def is_subscribed(Chat_id_channel, User_id):
    try:
        bot.get_chat_member(Chat_id_channel, User_id)
        return True
    except ApiTelegramException as e:
        if e.result_json['description'] == 'Bad Request: user not found':
            return False


@bot.callback_query_handler(func=lambda call: True)
def check(call):
    global chat_user_id, name_user, user_id
    if call.message:
        if call.data == "want":
            answer1()
        elif call.data == "nextquest":
            answer2()
        elif call.data == "watchsub":
            proverka(chat_user_id, user_id)
        elif call.data == "nextquest2":
            answer4()
        elif call.data == "nextquest3":
            bot.send_message(chat_user_id, 'Текст')
        else:
            bot.send_message(chat_user_id, "Error".format(bot.get_me()))


# RUN
bot.polling(none_stop=True)

  • Вопрос задан
  • 281 просмотр
Решения вопроса 1
SoreMix
@SoreMix Куратор тега Python
yellow
Удалить все глобальные переменные, заменив на хотя бы самую простую БД.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы