# Импорты
import telebot
from telebot import types
import os
# Определение бота
bot = telebot.TeleBot("TOKEN", parse_mode="MARKDOWN")
bot.set_webhook()
# Убирание кнопок
none = telebot.types.ReplyKeyboardRemove()
# # # # # # # # # # # # # # # # # # # # # # # # # # #
# команда /start
@bot.message_handler(commands=['start'])
def start(message):
buttons = types.InlineKeyboardMarkup()
books = [book.replace('_', ' ') for book in os.listdir('books')]
for book in books:
buttons.add(types.InlineKeyboardButton(f"{book}", callback_data=f"-book-{book}"))
bot.send_message(message.chat.id, f"Выбери учебник", reply_markup=buttons)
# Обработчик callback
@bot.callback_query_handler(func=lambda c: True)
def callback(c):
if '-book-' in c.data:
book = c.data.split('-book-', maxsplit=1)[1]
exercises = os.listdir(f"books\{book.replace(' ', '_')}")
buttons = types.InlineKeyboardMarkup()
btns = []
for exercise in exercises:
btns.append(
types.InlineKeyboardButton(
f"{exercise.replace('.png','')}",
callback_data=fr"-send-{book.replace(' ', '_')}\{exercise}"
)
)
for i in range(0, len(btns), 3):
try: buttons.add(btns[i], btns[i+1], btns[i+2])
except:
try: buttons.add(btns[i], btns[i+1])
except:
try: buttons.add(btns[i])
except: pass
bot.send_message(c.message.chat.id, f"Выбери номер", reply_markup=buttons)
if '-send-' in c.data:
path = f"books\{c.data.split('-send-', maxsplit=1)[1]}"
bot.send_photo(c.message.chat.id, photo=open(path,'rb'))
bot.polling(none_stop=True)
telebot.apihelper.ApiTelegramException: A request to the Telegram API was unsuccessful. Error code: 400. Description: Bad Request: file must be non-empty
- файл пустойtelegram.error.BadRequest: Button_data_invalid
)@bot.message_handler(func=lambda message: True)
def sayanswer(message):
kb = types.InlineKeyboardMarkup(row_width=1)
btn1 = types.InlineKeyboardButton(text="морфологический разбор", callback_data=f"morphological | {message.text}")
kb.add(btn1)
bot.send_message(message.chat.id, "какой разбор сделать?", reply_markup=kb)
@bot.callback_query_handler(func=lambda callback: callback.data)
def check(callback):
if "morphological" in callback.data:
url = "https://wikislovo.ru/morphology/" + callback.data.split(' | ')[1:]
html = requests.get(url).text
soup = BeautifulSoup(html, 'html.parser')
find_text = soup.find('div', class_="morphology-analysis").get_text()
bot.send_message(callback.message.chat.id, find_text)
bot = telebot.TeleBot("TOKEN", parse_mode="FORMATING")
TeleBot
telebot.TeleBot.__init__
который вызвается при создании нового экземпляра. Why doesn't my bot see messages from other bots?
Bots talking to each other could potentially get stuck in unwelcome loops. To avoid this, we decided that bots will not be able to see messages from other bots regardless of mode.
Боты, разговаривающие друг с другом, потенциально могут застрять в нежелательных петлях. Чтобы этого избежать, мы решили, что боты не смогут видеть сообщения от других ботов вне зависимости от режима.