Не работают команды в телеграм боте
Всем привет. Я недавно начал писать ботов в телеграм (через телебота) И столкнулся с такой проблемой, что добавив меню, у меня перестали работать команды, которые я ранее писал. Скажите пожалуйста где я ошибся код:
import telebot
from telebot import types
bot = telebot.TeleBot('Тут токен, но я его палить не буду')
@bot.message_handler(commands=['menu'])
def menu(message):
markup = types.ReplyKeyboardMarkup(resize_keyboard=True)
item1 = types.KeyboardButton('? Курс валют')
item2 = types.KeyboardButton('? Профиль')
item3 = types.KeyboardButton('? Связь с разработчиком')
markup.add(item1, item2, item3)
@bot.message_handler(content_types=['text'])
def bot_message(message):
if message.chat.type == 'private':
if message.text == '? Курс валют':
bot.send_message(message.chat.id, 'Курс валют\n?? $ ~91 руб.\n??€ ~98 руб.\n??₸ ~0,2\n??¥ ~12,5 руб.')
elif message.text == '? Связь с разработчиком':
bot.send_message(message.chat.id, 'Социальные сети\nvk: https://vk.com/hzchotytpisat1\nDiscord: energ0zzz1')
elif message.text == '? Профиль':
mess = f'Профиль\nПолное имя: {message.from_user.full_name}\nВаш ID: {message.from_user.id}'
bot.send_message(message.from_user.id, mess)
@bot.message_handler(commands=['start'])
def start(message):
bot.send_message(message.from_user.id, f'Привет, {message.from_user.first_name}!')
@bot.message_handler(commands=['help'])
def help_func(message):
bot.send_message(message.from_user.id, f'Команды, доступные в боте:\n/menu - открытие меню бота')
bot.polling(none_stop=True)
Если что, то ошибок в терминале никаких нету, всё в порядке, но вот команды не работают
Ответы (1 шт):
Автор решения: Bi Diaz
→ Ссылка
К сожалению, я не изучал библиотеку telebot, но знаком с aiogram - как по мне это лучший вариант, поэтому на его основе могу предложить работающий код.
Подразумевается создание четырех файлов: bot.py, handlers.py, keyboards.py, config.py
# bot.py
from aiogram import Bot, Dispatcher
import asyncio
from handlers import router
from config import TOKEN
async def main():
bot = Bot(token=TOKEN)
dp = Dispatcher()
dp.include_router(router)
await dp.start_polling(bot)
if __name__ == '__main__':
try:
asyncio.run(main())
except KeyboardInterrupt:
print("App closed")
# handlers.py
from aiogram import F, Router
from aiogram.types import Message, CallbackQuery
from aiogram.filters import CommandStart, Command
import keyboards as kb
router = Router()
@router.message(CommandStart())
async def cmd_start(message: Message):
await message.answer(f'Привет,
{message.from_user.first_name}', reply_markup=kb.menu)
@router.message(Command('help'))
async def cmd_help(message: Message):
await message.answer('тут будет справка')
# не стал добавлять оригинальный текст, ведь теперь меню
появляется когда тапают /start ;(
@router.message()
async def cmd_menu(message: Message):
if message.text == '? Курс валют':
await message.answer('Курс валют\n?? $ ~91 руб.\n??€ ~98
руб.\n??₸ ~0,2\n??¥ ~12,5 руб.')
elif message.text == '? Профиль':
await message.answer(f'Профиль\nПолное имя:
{message.from_user.full_name}\nВаш ID: {message.from_user.id}')
elif message.text == '? Связь с разработчиком':
await message.answer('Социальные сети\nvk:
https://vk.com/hzchotytpisat1\nDiscord: energ0zzz1')
#keyboards.py
from aiogram.types import (ReplyKeyboardMarkup, KeyboardButton,
InlineKeyboardButton, InlineKeyboardMarkup)
menu = ReplyKeyboardMarkup(keyboard=[
[KeyboardButton(text='? Курс валют')],
[KeyboardButton(text='? Профиль')],
[KeyboardButton(text='? Связь с разработчиком')]], # ох уж
эти разработчики ;)
resize_keyboard=True)
# config.py
TOKEN = ''