kinopoisk_unofficial.client.exception.bad_request.BadRequest
бот телеграмм 1 раз отвечает на запрос к кинопоиску, далее надо перезапускать, чтобы работало. Выдает такую ошибку: kinopoisk_unofficial.client.exception.bad_request.BadRequest
from aiogram import Bot, Dispatcher, executor, types
from aiogram.contrib.fsm_storage.memory import MemoryStorage
from aiogram.dispatcher import FSMContext
from aiogram.dispatcher.filters.state import State, StatesGroup
from aiogram.types import Message
import logging
import sqlite3
import config
import keyboard
from telnetlib import TELNET_PORT
from aiogram.types import ReplyKeyboardRemove, \
ReplyKeyboardMarkup, KeyboardButton, \
InlineKeyboardMarkup, InlineKeyboardButton
from yarl import URL
from kinopoisk_unofficial.kinopoisk_api_client import KinopoiskApiClient
from kinopoisk_unofficial.model.filter_country import FilterCountry
from kinopoisk_unofficial.model.filter_order import FilterOrder
from kinopoisk_unofficial.model.filter_genre import FilterGenre
from kinopoisk_unofficial.request.films.film_search_by_filters_request import FilmSearchByFiltersRequest
from kinopoisk_unofficial.kinopoisk_api_client import KinopoiskApiClient
from kinopoisk_unofficial.request.films.film_request import FilmRequest
ids = 0
zanr = str()
zik = 0
TOKEN = config.TOKEN1
CHANNEL_ID = config.CHANNEL_ID
bot = Bot(token=TOKEN)
dp = Dispatcher(bot)
api_client = KinopoiskApiClient(config.APITOKEN)
def check_sub_channel(chat_member):
if chat_member['status'] != 'left':
return True
else:
return False
@dp.message_handler(commands=['start'])
async def process_start_command(message: types.Message):
if message.chat.type == 'private':
if check_sub_channel(await bot.get_chat_member(chat_id=CHANNEL_ID, user_id=message.from_user.id)):
await bot.send_message(message.from_user.id, "Cпасибо, вот наш функционал?", reply_markup=keyboard.homemenu)
else:
await bot.send_message(message.from_user.id, "Привет, чтобы начать пользоваться нашим ботом, подпишись на эти каналы?" , reply_markup=keyboard.checksub)
@dp.message_handler()
async def bot_message(message: types.Message):
global ids
global zanr
if message.text == 'ПОДПИСАЛСЯ':
await bot.delete_message(message.from_user.id, message.message.message_id)
if check_sub_channel(await bot.get_chat_member(chat_id=CHANNEL_ID, user_id=message.from_user.id)):
await bot.send_message(message.from_user.id, "Cпасибо, вот наш функционал?", reply_markup=keyboard.homemenu)
else:
await bot.send_message(message.from_user.id, "Привет, чтобы начать пользоваться нашим ботом, подпишись на эти каналы?" , reply_markup=keyboard.checksub)
elif message.text == 'ЧТО ПОСМОТРЕТЬ??':
await bot.send_message(message.from_user.id, "Какой жанр хочешь посмотреть?", reply_markup=keyboard.firstquestion)
elif message.text == 'Комедия':
zanr = 'комедия'
ids=13
await bot.send_message(message.from_user.id, "Кинопроизводство какой страны интересно вам?", reply_markup=keyboard.strana)
elif message.text == 'Ужасы':
zanr = 'ужасы'
ids = 17
await bot.send_message(message.from_user.id, "Кинопроизводство какой страны интересно вам?", reply_markup=keyboard.strana)
elif message.text == 'Мультфильмы':
zanr = 'мультфильм'
ids = 18
await bot.send_message(message.from_user.id, "Кинопроизводство какой страны интересно вам?", reply_markup=keyboard.strana)
elif message.text == 'Фантастика':
zanr = 'фантастика'
ids = 6
await bot.send_message(message.from_user.id, "Кинопроизводство какой страны интересно вам?", reply_markup=keyboard.strana)
elif message.text == 'Триллеры':
zanr = 'триллер'
ids = 1
await bot.send_message(message.from_user.id, "Кинопроизводство какой страны интересно вам?", reply_markup=keyboard.strana)
elif message.text == 'Боевики':
zanr = 'боевики'
ids = 11
await bot.send_message(message.from_user.id, "Кинопроизводство какой страны интересно вам?", reply_markup=keyboard.strana)
elif message.text == 'Мелодрамы':
zanr = 'мелодрама'
ids = 4
await bot.send_message(message.from_user.id, "Кинопроизводство какой страны интересно вам?", reply_markup=keyboard.strana)
elif message.text == 'Детективы':
zanr = 'детективы'
ids = 5
await bot.send_message(message.from_user.id, "Кинопроизводство какой страны интересно вам?", reply_markup=keyboard.strana)
elif message.text == 'Приключения':
zanr = 'приключения'
ids = 7
await bot.send_message(message.from_user.id, "Кинопроизводство какой страны интересно вам?", reply_markup=keyboard.strana)
elif message.text == 'Фэнтази':
zanr = 'фэнтази'
ids = 12
await bot.send_message(message.from_user.id, "Кинопроизводство какой страны интересно вам?", reply_markup=keyboard.strana)
elif message.text == 'Военные':
zanr = 'военный'
ids = 14
await bot.send_message(message.from_user.id, "Кинопроизводство какой страны интересно вам?", reply_markup=keyboard.strana)
elif message.text == 'Семейные':
zanr = 'семейный'
ids = 19
await bot.send_message(message.from_user.id, "Кинопроизводство какой страны интересно вам?", reply_markup=keyboard.strana)
elif message.text == 'США':
print(ids)
stran = 'США'
global zik
zik = 0
request = FilmSearchByFiltersRequest()
request.add_genre(FilterGenre(int(ids),str(zanr)))
request.order = FilterOrder.RATING
request.year_from = 2017
request.add_country(FilterCountry(1, 'США'))
response = api_client.films.send_film_search_by_filters_request(request)
kod = (response.items[zik].kinopoisk_id )
request = FilmRequest(kod)
response = api_client.films.send_film_request(request)
namefilm = (response.film.name_ru)
opisanie = (response.film.short_description)
img = (response.film.poster_url)
await bot.send_message(message.from_user.id, f'Вот фильм, который ты можешь посмотреть?\n \n {namefilm} \n \n {opisanie}\n\n\n {img}' , reply_markup=keyboard.viborfilm)
elif message.text == 'Другой фильм':
zik = zik + 1
request = FilmSearchByFiltersRequest()
request.add_genre(FilterGenre(int(ids),str(zanr)))
request.order = FilterOrder.RATING
request.year_from = 2017
request.add_country(FilterCountry(1, 'США'))
response = api_client.films.send_film_search_by_filters_request(request)
kod = (response.items[zik].kinopoisk_id )
request = FilmRequest(kod)
response = api_client.films.send_film_request(request)
namefilm = (response.film.name_ru)
opisanie = (response.film.short_description)
img = (response.film.poster_url)
await bot.send_message(message.from_user.id, f'Вот фильм, который ты можешь посмотреть?\n \n {namefilm} \n \n {opisanie}\n\n\n {img}' , reply_markup=keyboard.viborfilm)
if __name__ == '__main__':
executor.start_polling(dp, skip_updates=True)