aiohttp.client_proto.ResponseHandler

Рейтинг: 0Ответов: 0Опубликовано: 05.06.2023

Всем доброго времени суток! Я уже около часа страдаю, у меня есть код для мультибота, но я не совсем понимаю, что нужно сделать. Предполагаю, что нужно как-то закрыть эту сессию, но не знаю, как и где.

Код:

@dp.message_handler(commands=['menu'])
async def show_menu(message: types.Message):
    user_id = message.from_user.id
    user = Users.select().where(Users.USER_ID == user_id).first()

    if user:
        bot_tokens = user.USERS_TOKENS.split()

        if not bot_tokens:
            await message.answer("Вы еще не добавили ни одного бота.")
            return

        for token in bot_tokens:
            keyboard = await create_keyboard(token)
            if keyboard:
                await show_menu_with_token(message, token, keyboard)   
    else:
        await message.answer("Вы еще не добавили ни одного бота.")



async def show_menu_with_token(message: types.Message, token: str, buttons: List[Tuple[str, str]]):
    bot = Bot(token)
    bot_info = await bot.get_me()
    bot_username = bot_info.username
    keyboard = InlineKeyboardMarkup(row_width=1, one_time_keyboard=True)
    for button_text, callback_data in buttons:
        keyboard.add(InlineKeyboardButton(text=button_text, callback_data=callback_data))
    await dp.bot.send_message(message.chat.id, f"Список добавленных ботов ({bot_username}):", reply_markup=keyboard)


@dp.message_handler(content_types=['text'], state=add_token.add_token)
async def adding_token(message: types.Message, state: FSMContext):
    user_id = message.from_user.id
    user = None

    try:
        user = Users.get(Users.USER_ID == user_id)
    except Users.DoesNotExist:
        pass

    if user:
        user_tokens = user.USERS_TOKENS or ''
        user_tokens_list = user_tokens.split()
        new_token = message.text

        if new_token:
            # Проверяем, является ли токен действительным
            try:
                bot = Bot(new_token)
                bot_info = await bot.get_me()
                bot_username = bot_info.username
                user_tokens_list.append(new_token)
                user.USERS_TOKENS = ' '.join(user_tokens_list)
                user.COUNTBOTS = len(user_tokens_list)
                user.save()
                await message.answer(f'Токен для бота {bot_username} успешно добавлен.')
            except:
                await message.answer('Ошибка: токен недействителен.')
        else:
            await message.answer('Ошибка: токен не указан.')

        await state.finish()
    else:
        await message.answer('Ошибка: пользователь не найден.')


async def create_keyboard(token: str):
    bot = Bot(token)
    bot_info = await bot.get_me()
    bot_username = bot_info.username

    buttons = [(f"{bot_username}", f"https://t.me/{bot_username}")]
    keyboard = []

    for button_text, url in buttons:
        button = {"text": button_text, "url": url}
        keyboard.append(button)

    return keyboard

Ошибка:

 client_session: <aiohttp.client.ClientSession object at 0x0000029513352310>
ERROR:asyncio:Unclosed connector
connections: ['[(<aiohttp.client_proto.ResponseHandler object at 0x00000295137516A0>, 202737.125)]']
connector: <aiohttp.connector.TCPConnector object at 0x0000029511EC5F10>
ERROR:asyncio:Unclosed client session
client_session: <aiohttp.client.ClientSession object at 0x0000029513744710>
ERROR:asyncio:Unclosed connector
connections: ['[(<aiohttp.client_proto.ResponseHandler object at 0x00000295137516A0>, 202737.312)]']
connector: <aiohttp.connector.TCPConnector object at 0x0000029513352310>

Я обращался даже к ИИ, никак понять не могу что делаю не так

вот еще часть кода которая может помочь

from loader import *
from handlers import client
from handlers import admin
from aiogram import executor
from handlers import start
from mics.middleware import *
from handlers.regiser_bot_member import *

client.register_handlers_client(dp)
admin.register_handlers_client(dp)


def on_startup():
    logging.info('Бот успешно запущен! Приятной работы!')


if __name__ == '__main__':
    dp.middleware.setup(ThrottlingMiddleware())
    executor.start_polling(dp, on_startup=on_startup())

Ответы

Ответов пока нет.