Главная функция бота - просмотр аниме (оно уже загружено на сервера тг). Я хочу сделать функцию поиска аниме. В коде под #список аниме у меня перечислены названия самих аниме в reply-кнопках, а ниже уже идут аниме со списком сезонов через callback-кнопки. Я хочу, чтобы, когда человек вводил часть названия аниме или полностью, бот присылал ему конкретное аниме или список аниме с похожим названием. Сам не разбираюсь в программировании, а в интернете не нашёл. Пожалуйста помогите. В пример можно взять другого бота (
https://t.me/anilibria_bot). В нём поиск реализован так, как в моих фантазиях. Приложу нужную часть кода, т.к. он уже 1000+ строк
import telebot
import random
import os
from telebot import types
bot = telebot.TeleBot('мой токен')
#две кнопки при запуске бота(главное меню) + приветствие
@bot.message_handler(commands=['start'])
def start_message(message):
markup = types.ReplyKeyboardMarkup(resize_keyboard=True)
btn1 = types.KeyboardButton("Аниме")
btn2 = types.KeyboardButton('Как дела?')
btn3 = types.KeyboardButton('Случайный арт')
btn4 = types.KeyboardButton('Нажми на меня')
markup.add(btn1, btn3)
markup.add(btn2, btn4)
bot.send_message(message.chat.id, "Привет")
bot.send_message(message.chat.id, 'Ты зашёл в бота ANIME UTOPIA')
bot.send_message(message.chat.id, 'Я - лучший сервис для просмотра аниме\nКстати, здесь ты можешь скачать любую серию', reply_markup=markup)
@bot.message_handler(content_types=['text', 'document', 'file', 'video', 'photo'])
def get_text_message(message):
#порадоваться за бота
if message.text == 'Как дела?':
bot.send_message(message.chat.id, 'Прекрасно, ведь меня написал perchyyy')
#главное меню
elif message.text == 'Главное меню':
markup = types.ReplyKeyboardMarkup(resize_keyboard=True)
btn1 = types.KeyboardButton('Аниме')
btn2 = types.KeyboardButton('Как дела?')
btn3 = types.KeyboardButton('Случайный арт')
btn4 = types.KeyboardButton('Нажми на меня')
markup.add(btn1, btn3)
markup.add(btn2, btn4)
bot.send_message(message.chat.id, 'Вы вернулись в главное меню', reply_markup=markup)
#Список аниме
elif message.text == 'Аниме':
markup = types.ReplyKeyboardMarkup(resize_keyboard=True)
btn1 = types.KeyboardButton('Атака титанов')
btn3 = types.KeyboardButton('Главное меню')
btn4 = types.KeyboardButton('Безумный азарт')
btn5 = types.KeyboardButton('Дневник будущего')
btn6 = types.KeyboardButton('Re:Zero')
btn2 = types.KeyboardButton('Дороро')
btn7 = types.KeyboardButton('Звёздное дитя')
btn8 = types.KeyboardButton('Синяя тюрьма: Блю Лок')
btn9 = types.KeyboardButton('Убийца Акамэ!')
btn10 = types.KeyboardButton('Человек-бензопила')
markup.row(btn6)
markup.add(btn1, btn4, btn5)
markup.row(btn2, btn7, btn8)
markup.row(btn9, btn10)
markup.row(btn3)
bot.send_message(message.chat.id, 'Какое аниме хочешь посмотреть?', reply_markup = markup)
#Случайный арт
elif message.text == 'Случайный арт':
dir_path = 'E:\\tg pics\\2. каша'
files = os.listdir(dir_path)
rand_file = random.choice(files)
full_path = os.path.join(dir_path, rand_file)
with open(full_path, 'rb') as f:
bot.send_photo(message.chat.id, f)
#Атака титанов
elif message.text == 'Атака титанов':
markup = types.InlineKeyboardMarkup(row_width=1)
btn1 = types.InlineKeyboardButton(text='1 Сезон', callback_data='AoT1')
btn2 = types.InlineKeyboardButton(text='2 Сезон', callback_data='AoT2')
btn3 = types.InlineKeyboardButton(text='3 Сезон', callback_data='AoT3')
btn4 = types.InlineKeyboardButton(text='4 Сезон', callback_data='AoT4')
btn5 = types.InlineKeyboardButton(text='Финал', callback_data='AoT5')
markup.row(btn1, btn2, btn3, btn4)
markup.row(btn5)
img = open('E:\\tg pics\\3. постеры\\Атака титанов.jpg', 'rb')
bot.send_photo(message.chat.id, img, '➖➖➖ \nАтака титанов \nAttack on titan \n➖➖➖ \nОзвучка - StudioBand', reply_markup=markup)
#Безумный азарт
elif message.text == 'Безумный азарт':
markup = types.InlineKeyboardMarkup(row_width=1)
btn1 = types.InlineKeyboardButton(text='1 Сезон', callback_data='1Azart')
btn2 = types.InlineKeyboardButton(text='2 Сезон', callback_data='2Azart')
markup.row(btn1, btn2)
img = open('E:\\tg pics\\3. постеры\\Безумый азарт.jpg', 'rb')
bot.send_photo(message.chat.id, img, '➖➖➖ \nБезумный азарт \nKakegurui \n➖➖➖ \nОзвучка - AniDUB', reply_markup=markup)
#Дневник будущего
elif message.text == 'Дневник будущего':
markup = types.InlineKeyboardMarkup(row_width=1)
btn1 = types.InlineKeyboardButton(text='1 Сезон', callback_data='FutureDiary')
markup.row(btn1)
img = open('E:\\tg pics\\3. постеры\\Дневник будущего.jpg', 'rb')
bot.send_photo(message.chat.id, img, '➖➖➖ \nДневник будущего \nThe Future Diary \n➖➖➖ \nОзвучка - AniDUB', reply_markup=markup)
#Re:Zero
elif message.text == 'Re:Zero':
markup = types.InlineKeyboardMarkup(row_width=1)
btn1 = types.InlineKeyboardButton(text='1 Сезон', callback_data='1Re:Zero')
btn2 = types.InlineKeyboardButton(text='2 Сезон', callback_data='2Re:Zero')
markup.row(btn1, btn2)
img = open('E:\\tg pics\\3. постеры\\ReZero.jpg', 'rb')
bot.send_photo(message.chat.id, img, '➖➖➖ \nRe:Zero. Жизнь с нуля в альтернативном мире \nRe:Zero kara Hajimeru Isekai Seikatsu \n➖➖➖ \nОзвучка - AniDUB', reply_markup=markup)
#Дороро
elif message.text == 'Дороро':
markup = types.InlineKeyboardMarkup(row_width=1)
btn1 = types.InlineKeyboardButton(text='1 Сезон', callback_data='Dororo')
markup.row(btn1)
img = open('E:\\tg pics\\3. постеры\\Дороро.jpg', 'rb')
bot.send_photo(message.chat.id, img, '➖➖➖ \nДороро \nDororo \n➖➖➖ \nОзвучка - AniLibria', reply_markup=markup)
#Звёздное дитя
elif message.text == 'Звёздное дитя':
markup = types.InlineKeyboardMarkup(row_width=1)
btn1 = types.InlineKeyboardButton(text='1 Сезон', callback_data='OshinoKo')
markup.row(btn1)
img = open('E:\\tg pics\\3. постеры\\Звёздное дитя.jpg', 'rb')
bot.send_photo(message.chat.id, img, '➖➖➖ \nЗвёздное дитя \nOshi no Ko \n➖➖➖ \nОзвучка - AniLibria', reply_markup=markup)
#Синяя тюрьма: Блю Лок
elif message.text == 'Синяя тюрьма: Блю Лок':
markup = types.InlineKeyboardMarkup(row_width=1)
btn1 = types.InlineKeyboardButton(text='1 Сезон', callback_data='BlueLock')
markup.row(btn1)
img = open('E:\\tg pics\\3. постеры\\Синяя тюрьма.jpg', 'rb')
bot.send_photo(message.chat.id, img, '➖➖➖ \nСиняя тюрьма: Блю Лок \nBlue Lock \n➖➖➖ \nОзвучка - AniLibria', reply_markup=markup)
#Убийца Акамэ
elif message.text == 'Убийца Акамэ!':
markup = types.InlineKeyboardMarkup(row_width=1)
btn1 = types.InlineKeyboardButton(text='1 Сезон', callback_data='AkameGaKill')
markup.row(btn1)
img = open('E:\\tg pics\\3. постеры\\Убийца Акамэ.jpg', 'rb')
bot.send_photo(message.chat.id, img, '➖➖➖ \nУбийца Акамэ! \nAkame Ga Kill!! \n➖➖➖ \nОзвучка - AniDUB', reply_markup=markup)
#Человек-бензопила
elif message.text == 'Человек-бензопила':
markup = types.InlineKeyboardMarkup(row_width=1)
btn1 = types.InlineKeyboardButton(text='1 Сезон', callback_data='1ChainsawMan')
markup.row(btn1)
img = open('E:\\tg pics\\3. постеры\\Человек-бензопила.jpg', 'rb')
bot.send_photo(message.chat.id, img, '➖➖➖ \nЧеловек-бензопила! \nChainsaw Man!! \n➖➖➖ \nОзвучка - AniLibria', reply_markup=markup)
else:
bot.send_message(message.chat.id, 'Прости, я не умею общаться не заложенными в меня командами')