Задать вопрос
@daniil_orlovv

Как передать переменную со значением из одной функции в другую функцию в pyTelegramBotAPI?

Есть следующий код:

import random as r
import sqlite3 as sql
import telebot
import config
from telebot import types

bot = telebot.TeleBot(config.token)
con = sql.connect("questions.db", check_same_thread=False)
cur = con.cursor()


@bot.message_handler(commands=["start"])
def start_message(message):
    bot.send_message(message.chat.id, ("Привет, я бот помощник по тестам!"))


@bot.message_handler(commands=["ask"])
def ask_question(message):
    number = r.randint(20, 35)
    cur.execute(f"SELECT question FROM all_questions WHERE number = {number}")
    question = cur.fetchone()[0]
    markup = types.InlineKeyboardMarkup()
    markup.add(types.InlineKeyboardButton("Узнать правильный ответ", callback_data="answer"))
    bot.send_message(message.chat.id, question, reply_markup=markup)


@bot.callback_query_handler(func=lambda call: True) #вешаем обработчик событий на нажатие всех inline-кнопок
def callback_inline(call):
    if call.data == "answer":
        bot.send_message()


if __name__ == '__main__':
    bot.infinity_polling()


Как передать переменную "question" из функции "ask_question" в функцию "callback_inline"? В этой переменной есть вопрос и ответ. Нужно вывести ответ на тот же вопрос из базы данных.
  • Вопрос задан
  • 623 просмотра
Подписаться 1 Простой 7 комментариев
Решения вопроса 1
@daniil_orlovv Автор вопроса
Помог следующий вопрос...

https://qna.habr.com/q/820511?e=13457010#clarifica...
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
@VasiliyGubenkov
Даниил, привет! Читаю обе темы, и твою, и ту, что тебе помогла, но у меня все равно не получается. У меня такая-же проблема как у тебя, только легче. Мне нужно всего один параметр передать вместе с кнопкой. Можешь пожалуйста посмотреть мой вопрос:
Как отправить переменную вместе с нажатием кнопки, в декоратор callback, не прибегая к созданию глобальной переменной?
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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