1
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'
4

1 回答 1

1

中的概念很少python-telegram-bot

  • KeyboardButton-用于描述简单回复按钮的按钮类,可以仅使用字符串代替。例子:

    KeyboardButton(text='ABC')
    
  • ReplyKeyboardMarkup- KeyboardButtons 的容器类接受它们的列表或仅接受一个(字符串或对象)。例子:

    ReplyKeyboardMarkup([
        'ABC',
        KeyboardButton(text='DEF'),
        KeyboardButton(text='GHI'),
    ])
    ReplyKeyboardMarkup('ABC')
    ReplyKeyboardMarkup(KeyboardButton(text='DEF'))
    
  • InlineKeyboardButton-用于描述内联按钮的按钮类,只能通过类使用,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"),
)
于 2020-09-21T07:38:11.990 回答