Python 如何更新传递给InlineButton的变量的值
我最近在StackOverflow上 现在我在TelebotAPI上编写了一个机器人,我正在尝试制作一个带有用户喜好和不喜好的动态键盘。我想在按钮上显示点击次数。为此,它们的值被写入我使用sqlite3的数据库中 最初,值会正确显示,但变量的新值只有在重新启动bot后才会显示 我应该使用什么函数或方法更新值而不重新启动Python 如何更新传递给InlineButton的变量的值,python,telegram,telegram-bot,python-telegram-bot,Python,Telegram,Telegram Bot,Python Telegram Bot,我最近在StackOverflow上 现在我在TelebotAPI上编写了一个机器人,我正在尝试制作一个带有用户喜好和不喜好的动态键盘。我想在按钮上显示点击次数。为此,它们的值被写入我使用sqlite3的数据库中 最初,值会正确显示,但变量的新值只有在重新启动bot后才会显示 我应该使用什么函数或方法更新值而不重新启动 import telebot import sqlite3 as sql import config from telebot import types connection
import telebot
import sqlite3 as sql
import config
from telebot import types
connection = sql.connect('lind.sqlite')
q = connection.cursor()
#q.execute('''CREATE TABLE lind (id int auto_increment primary key, like int, norm int, diz int)''')
connection.commit()
teal1 = int(0)
tean1 = int(0)
tead1 = int(0)
q.execute("INSERT INTO lind (like, norm, diz) VALUES ('%s', '%s', '%s')"%(teal1, tean1, tead1))
connection.commit()
q.execute("SELECT * FROM lind")
connection.commit()
re = q.fetchone()
az = re[1]
azz = re[2]
azzz = re[3]
q.close()
connection.commit()
connection.close()
bot = telebot.TeleBot(config.TOKEN)
photo = 'AgADAgAD-6wxG7agqUrFbpkcDO9ste__tw8ABAEAAwIAA20AA4X1BgABFgQ' #'ШУ Гуюаньчунь'}},
def keyboard_reaction():
keyboard = types.InlineKeyboardMarkup()
but_1 = types.InlineKeyboardButton(text='Like {like}'.format(like=az), callback_data='tea1like')
but_2 = types.InlineKeyboardButton(text='Norm {norm}'.format(norm=azz), callback_data='tea1norm')
but_3 = types.InlineKeyboardButton(text='DizL {diz}'.format(diz=azzz), callback_data='tea1diz')
keyboard.add(but_1, but_2, but_3)
return keyboard
@bot.message_handler(commands=['start'])
def first(message):
startmenu = types.ReplyKeyboardMarkup(True, True)
startmenu.row('GO!')
bot.send_message(message.chat.id, 'Hello!✋The problem is that az, azz, azzz
variables in inline()
function are diferent to az, azz, azzz
variables in keyboard_reaction()
function. You sloud initialize this variables in inline()
as a global varible.
@bot.callback_query_handler(func=lambda c: True)
def inline(c):
global az
global azz
global azzz
...
进口遥控机器人
将sqlite3作为sql导入
导入配置
从telebot导入类型
connection=sql.connect'lind.sqlite'
q=连接。光标
q、 执行“创建表lind id int自动递增主键,如int、norm int、diz int”
连接.提交
teal1=int0
tean1=int0
tead1=int0
q、 将executeINSERT插入类lind、norm、diz值“%s”、“s”、“s”%tea1、tea1、tea1
连接.提交
q、 executeSELECT*从lind
连接.提交
re=q.fetchone
az=re[1]
azz=re[2]
azzz=re[3]
q、 接近
连接.提交
连接。关闭
bot=telebot.TeleBotconfig.TOKEN
照片='AgADAgAD-6wxG7agqUrFbpkcDO9ste__tw8;8abaeawiaa20aa4x1bgabfgq''БУюачааачаа},
def键盘反应:
键盘=类型。InlineKeyboardMarkup
但_1=types.InlineKeyboardButtontext='Like{Like}'。formatlike=az,callback_data='tea1like'
但_2=types.InlineKeyboardButtontext='Norm{Norm}'。formatnorm=azz,回调_data='tea1norm'
但_3=types.inlinekeyboardbuttonext='DizL{diz}'。formatdiz=azzz,callback_data='tea1diz'
keyboard.addbut_1,but_2,but_3
返回键盘
@bot.message_handlercommands=['start']
def第一条消息:
startmenu=types.ReplyKeyboardMarkupTrue,True
开始菜单,开始
bot.send_messagemessage.chat.id'你好!✋ 问题是内联函数中的az、azz、azzz变量与键盘反应函数中的az、azz、azzz变量不同。您可以在内联中将此变量初始化为全局变量
@bot.callback\u query\u handlerfunc=lambda c:True
def inlinec:
全球az
全球azz
全球azzz
...