在创建电报bot时,终端正在争辩第8行中的“文本”

问题描述

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"),)

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...