Не работает телеграм бот⠀

Учусь писать телеграм бот, для своего канала. Однако почему то бот долго отвечает на команды или вообще не отвечает. Код маленький, запускаю пока что на 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 шт):

Автор решения: ikikaidesu

вы не совсем правильно используете клавиатуру. Для работы с ней используйте 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":

а после определения даты делать то что вам нужно.

Удачи с вашим ботом!

→ Ссылка