问题描述
import telebot
import config
from telebot import types
bot = telebot.TeleBot(config.TOKEN)
language = "kazakh"
keyboard1 = types.ReplyKeyboardMarkup()
item_kaz = types.ReplyKeyboardMarkup(text = "Қазақ тілі",callback_data = "kazakh")
item_rus = types.ReplyKeyboardMarkup(text = "Русский язык",callback_data = "russian")
keyboard1.add(item_kaz,item_rus)
keyboard2 = types.ReplyKeyboardMarkup(True,True)
item_7 = types.ReplyKeyboardMarkup(text = "7",callback_data = "7")
item_8 = types.ReplyKeyboardMarkup(text = "8",callback_data = "8")
item_9 = types.ReplyKeyboardMarkup(text = "9",callback_data = "9")
item_10 = types.ReplyKeyboardMarkup(text = "10",callback_data = "10")
item_11 = types.ReplyKeyboardMarkup(text = "11",callback_data = "11")
item_12 = types.ReplyKeyboardMarkup(text = "12",callback_data = "12")
keyboard2.add(item_7,item_8,item_9,item_10,item_11,item_12)
keyboard3 = telebot.types.ReplyKeyboardMarkup(True,True)
item_1 = types.ReplyKeyboardMarkup(text = "1",callback_data = "1")
item_2 = types.ReplyKeyboardMarkup(text = "2",callback_data = "2")
item_3 = types.ReplyKeyboardMarkup(text = "3",callback_data = "3")
item_4 = types.ReplyKeyboardMarkup(text = "4",callback_data = "4")
keyboard3.add(item_1,item_2,item_3,item_4)
@bot.message_handler(commands=['start'])
def welcome(message):
sti = open('static/welcome.webp','rb')
bot.send_sticker(message.chat.id,sti)
bot.send_message(message.chat.id," Қош келдіңіз / Добро пожаловать,{0.first_name}!\nМенің атым / Я - <b>{1.first_name}</b>.Тілді таңдаңыз / Выберите язык.".format(message.from_user,bot.get_me()),parse_mode='html',reply_markup=keyboard1)
def synyptar(message):
bot.send_message(message.chat.id,'Сыныпты таңдаңыз / Выберите класс',reply_markup=keyboard2)
def toqsandar(message):
bot.send_message(message.chat.id,'Тоқсанды таңдаңыз / Выберите четверть',reply_markup=keyboard3)
@bot.message_handler(content_types=['text'])
def lalala(message):
bot.send_message(message.chat.id,message.text)
#RUN
bot.polling(none_stop=True)
大家好,最近我遇到了与电报有关的令人不快的问题。我想通过ReplyKeyboardMarkup添加按钮,但是python并没有给我机会。如果您理解,请帮助解决此问题。
item_kaz = types.InlineKeyboardMarkup(text = "Қазақ тілі",callback_data = "kazakh")
TypeError: __init__() got an unexpected keyword argument 'text'
解决方法
python-telegram-bot
中的概念很少:
-
KeyboardButton
- button 类,用于描述简单答复按钮,可以仅使用字符串代替。示例:KeyboardButton(text='ABC')
-
ReplyKeyboardMarkup
-KeyboardButtons的容器类接受它们的列表或仅接受一个列表(字符串或对象)。示例:ReplyKeyboardMarkup([ 'ABC',KeyboardButton(text='DEF'),KeyboardButton(text='GHI'),]) ReplyKeyboardMarkup('ABC') ReplyKeyboardMarkup(KeyboardButton(text='DEF'))
-
InlineKeyboardButton
-用于内联按钮描述的 button 类,只能通过类使用,callback_data
不是必需的。示例:InlineKeyboardButton(text='ABC',callback_data="button_abc")
-
InlineKeyboardMarkup
-InlineKeyboardButton的容器类包含它们的列表。示例:InlineKeyboardMarkup([ InlineKeyboardButton(text='ABC',callback_data="button_abc"),InlineKeyboardButton(text='DEF',callback_data="button_def"),InlineKeyboardButton(text='GHI',callback_data="button_ghi"),])
在您的情况下,您误用了InlineKeyboardMarkup
而不是InlineKeyboardButton
。因此,您需要更改:
keyboard1 = types.InlineKeyboardMarkup(
types.InlineKeyboardButton(text="Қазақ тілі",callback_data="kazakh"),types.InlineKeyboardButton(text="Русский язык",callback_data="russian"),)