Не работает телеграм бот⠀
Учусь писать телеграм бот, для своего канала. Однако почему то бот долго отвечает на команды или вообще не отвечает. Код маленький, запускаю пока что на PyCharm.
import telebot
from telebot
import types
bot = telebot.TeleBot('token')
@bot.message_handler(commands=['start'])
def start(message):
markup = types.ReplyKeyboardMarkup()
btn1 = types.InlineKeyboardButton('Предложить новость')
btn2 = types.InlineKeyboardButton('Поддержка')
markup.row(btn1, btn2)
btn3 = types.InlineKeyboardButton('Реклама')
btn4 = types.InlineKeyboardButton('Мы в интернете')
markup.row(btn3, btn4)
bot.send_message(message.chat.id, 'Доброе пожаловать!', reply_markup=markup)
bot.register_next_step_handler(message, on_click)
def on_click(message):
if message.text == "Предложить новость":
bot.register_next_step_handler(message, news)
elif message.text == "Поддержка":
bot.register_next_step_handler(message, sup)
def news(message):
bot.send_message(message.chat.id, 'Введите текст и ссылку на официальный источник новости')
def sup(message):
bot.send_message(message.chat.id, 'Новое обращение')
bot.infinity_polling()
Ответы (1 шт):
вы не совсем правильно используете клавиатуру. Для работы с ней используйте callback-запросы
Пример:
markup = types.ReplyKeyboardMarkup()
btn1 = types.InlineKeyboardButton('Предложить новость', callback_data='offer_news')
btn2 = types.InlineKeyboardButton('Поддержка', callback_data='support')
markup.row(btn1, btn2)
@bot.callback_query_handler(func=lambda call: call.data in ['offer_news', 'support'])
def process_callback(call):
do something...
функция register_next_step_handler
нужна если вы хотите получить какое-то сообщение от пользователя(к примеру его игровое имя, какая-то дата и т.д.), у вас это в целом правильно реализовано в последних функциях.
Например конкретно в вашем коде нужно добавить декоратор из моего примера в функцию on_click
и вписать те запросы которые вы добавите для своей клавиатуры, а в функции обрабатывать их через:
if call.data == "some_data":
а после определения даты делать то что вам нужно.
Удачи с вашим ботом!