@newbie_python

Как выполнить корректную подстановку значения при наличии условия 'if'?

Всем привет! Запускаю бота, жму кнопку - все отрабатывает ок, жму кнопку во второй раз - возникает проблема, что 'session_id', который я генерю, подставляется в запрос тот же, что при первом нажатии. А мне нужно, чтобы при каждом нажатии кнопки подставлялось рандомное значение 'session_id', то есть каждое нажатие кнопки = "новая сессия", подскажите, пож-та, как быть..

import telebot
from telebot import types
import requests
import uuid

bot = telebot.TeleBot("MY_TOKEN")

session_id = uuid.uuid4()

url="MY_LINK"
headers = {'content-type': 'text/xml'}

request1 = f"""<typ:simple>
                    <typ:attributeName>Session_Id</typ:attributeName>
                    <typ:value>{session_id}</typ:value>
            </typ:simple>"""

request2 = f"""<typ:simple>
                    <typ:attributeName>Session_Id</typ:attributeName>
                    <typ:value>{session_id}</typ:value>
                </typ:simple>"""

@bot.message_handler(commands=['start'])
def send_welcome(message):
	bot.send_message(
		message.chat.id,
		"""Тестовое сообщение""",
		reply_markup=keyboard())

def keyboard():
	markup = types.ReplyKeyboardMarkup(one_time_keyboard=False, resize_keyboard=True)
	markup.add('запрос1')
	return markup  

@bot.message_handler(content_types=['text'])
def send_text(message):

    if message.text.lower() == 'запрос1':
            response1 = requests.post(url,data=request1.encode('utf-8'),headers=headers)
            answer1 = response1.content.decode('UTF-8')
            status_code1 = response1.status_code
            bot.send_message(message.chat.id, answer1, status_code1)

            if 'Session_Id' in answer1:
                response2 = requests.post(url,data=request2.encode('utf-8'),headers=headers)
                answer2 = response2.content.decode('UTF-8')
                status_code2 = response2.status_code
                bot.send_message(message.chat.id, answer2, status_code2)
            
bot.polling(none_stop = True)
  • Вопрос задан
  • 139 просмотров
Решения вопроса 1
SoreMix
@SoreMix Куратор тега Python
yellow
Вы его один раз инициировали и все.

Если вам нужно новое число каждый раз - создавайте его заново
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
@UberPool
Python/JS coder
Ну при нажатий генерируй и все...
def generate():
    session =  uuid.uuid4()
    return session
Ответ написан
Ваш ответ на вопрос

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

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