aiohttp.client_proto.ResponseHandler
Всем доброго времени суток! Я уже около часа страдаю, у меня есть код для мультибота, но я не совсем понимаю, что нужно сделать. Предполагаю, что нужно как-то закрыть эту сессию, но не знаю, как и где.
Код:
@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())
Источник: Stack Overflow на русском