Задать вопрос
@Vitalij35

TimeoutError Aiogram как решить?

Решил написать бота модератора, но он выбивает ошибку:
spoiler
ERROR:aiogram.dispatcher.dispatcher:Cause exception while getting updates.
Traceback (most recent call last):
File "C:\Users\koste\AppData\Local\Programs\Python\Python311\Lib\site-packages\aiogram\dispatcher\dispatcher.py", line 381, in start_polling
updates = await self.bot.get_updates(
^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\Users\koste\AppData\Local\Programs\Python\Python311\Lib\site-packages\aiogram\bot\bot.py", line 110, in get_updates
result = await self.request(api.Methods.GET_UPDATES, payload)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\Users\koste\AppData\Local\Programs\Python\Python311\Lib\site-packages\aiogram\bot\base.py", line 236, in request
return await api.make_request(await self.get_session(), self.server, self.__token, method, data, files,
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\Users\koste\AppData\Local\Programs\Python\Python311\Lib\site-packages\aiogram\bot\api.py", line 139, in make_request
async with session.post(url, data=req, **kwargs) as response:
File "C:\Users\koste\AppData\Local\Programs\Python\Python311\Lib\site-packages\aiohttp\client.py", line 1141, in __aenter__
self._resp = await self._coro
^^^^^^^^^^^^^^^^
File "C:\Users\koste\AppData\Local\Programs\Python\Python311\Lib\site-packages\aiohttp\client.py", line 560, in _request
await resp.start(conn)
File "C:\Users\koste\AppData\Local\Programs\Python\Python311\Lib\site-packages\aiohttp\client_reqrep.py", line 894, in start
with self._timer:
File "C:\Users\koste\AppData\Local\Programs\Python\Python311\Lib\site-packages\aiohttp\helpers.py", line 721, in __exit__
raise asyncio.TimeoutError from None
TimeoutError


Вот код:
import config
import logging
import filters

from datetime import datetime
from datetime import timedelta
from aiogram.contrib.fsm_storage.memory import MemoryStorage
from aiogram.utils.exceptions import Throttled
from aiogram.types import BotCommand
from aiogram import Bot, Dispatcher, executor, types
from filters import IsAdminFilter

# log level
logging.basicConfig(level=logging.INFO)

# bot init
bot = Bot(token=config.TOKEN)
storage = MemoryStorage()
dp = Dispatcher(bot, storage=storage)

#activate filters
dp.filters_factory.bind(IsAdminFilter)

@dp.message_handler(content_types=["new_chat_members"])
async def on_user_joined(message: types.Message):
    await message.delete()

@dp.message_handler(is_admin=True, commands=["ban"], commands_prefix="!/")
async def cmd_ban(message: types.Message):
    if not message.reply_to_message:
        await message.reply("Ця команда повинна бути відповіддю на повідомлення!")
        return

    await message.bot.delete_message(chat_id= -1001831442768, message_id=message.message_id)
    await message.bot.kick_chat_member(chat_id= -1001831442768, user_id=message.reply_to_message.from_user.id)

    await message.reply_to_message.reply("Користувача було забанено!")

@dp.message_handler(is_admin=True, commands=["unban"], commands_prefix="!/")
async def cmd_unban(message: types.Message):
    if not message.reply_to_message:
        await message.reply("Ця команда повинна бути відповіддю на повідомлення!")
        return

    await message.bot.delete_message(chat_id= -1001831442768, message_id=message.message_id)
    await message.bot.unban_chat_member(chat_id= -1001831442768, user_id=message.reply_to_message.from_user.id)

    await message.reply_to_message.reply("Користувача було розбанено!")


@dp.message_handler(commands=['mute'], commands_prefix='!/', is_chat_admin=True)
async def mute(message):
      name1 = message.from_user.get_mention(as_html=True)
      if not message.reply_to_message:
         await message.reply("Ця команда повинна бути відповіддю на повідомлення!")
         return
      try:
         muteint = int(message.text.split()[1])
         mutetype = message.text.split()[2]
         comment = " ".join(message.text.split()[3:])
      except IndexError:
         await message.reply('Не достатньо аргументів!\nНаприклад:\n`!mute 1 h причина`')
         return
      if mutetype == "h" or mutetype == "ч" or mutetype == "часів":
         dt = datetime.now() + timedelta(hours=muteint)
         timestamp = dt.timestamp()
         await bot.restrict_chat_member(message.chat.id, message.reply_to_message.from_user.id, types.ChatPermissions(False), until_date = timestamp)
         await message.reply(f' | <b>Рішення було принято:</b> {name1}\n | <b>Порушник:</b> <a href="tg://user?id={message.reply_to_message.from_user.id}">{message.reply_to_message.from_user.first_name}</a>\n⏰ | <b>Термін дії:</b> {muteint} {mutetype}\n | <b>Причина:</b> {comment}',  parse_mode='html')
         await message.bot.delete_message(chat_id= -1001831442768, message_id=message.message_id)
      elif mutetype == "m" or mutetype == "м" or mutetype == "минут":
         dt = datetime.now() + timedelta(minutes=muteint)
         timestamp = dt.timestamp()
         await bot.restrict_chat_member(message.chat.id, message.reply_to_message.from_user.id, types.ChatPermissions(False), until_date = timestamp)
         await message.reply(f' | <b>Рішення було принято:</b> {name1}\n | <b>Порушник:</b> <a href="tg://user?id={message.reply_to_message.from_user.id}">{message.reply_to_message.from_user.first_name}</a>\n⏰ | <b>Термін дії:</b> {muteint} {mutetype}\n | <b>Причина:</b> {comment}',  parse_mode='html')
         await message.bot.delete_message(chat_id= -1001831442768, message_id=message.message_id)
      elif mutetype == "d" or mutetype == "д" or mutetype == "днів":
         dt = datetime.now() + timedelta(days=muteint)
         timestamp = dt.timestamp()
         await bot.restrict_chat_member(message.chat.id, message.reply_to_message.from_user.id, types.ChatPermissions(False), until_date = timestamp)         
         await message.reply(f' | <b>Рішення було принято:</b> {name1}\n | <b>Порушник:</b> <a href="tg://user?id={message.reply_to_message.from_user.id}">{message.reply_to_message.from_user.first_name}</a>\n⏰ | <b>Термін дії:</b> {muteint} {mutetype}\n | <b>Причина:</b> {comment}',  parse_mode='html')
         await message.bot.delete_message(chat_id= -1001831442768, message_id=message.message_id)
      
@dp.message_handler(is_admin=True, commands=["unmute"], commands_prefix="!/")
async def cmd_ban(message: types.Message):
    if not message.reply_to_message:
        await message.reply("Ця команда повинна бути відповіддю на повідомлення!")
        return

    dt = datetime.now() + timedelta(minutes=1)
    timestamp = dt.timestamp()
    await message.bot.delete_message(chat_id= -1001831442768, message_id=message.message_id)
    await bot.restrict_chat_member(message.chat.id, message.reply_to_message.from_user.id, types.ChatPermissions(False), until_date = timestamp)
    await message.reply_to_message.reply("Користувача буде розмучено через 1 хвилину!")

async def anti_flood(*args, **kwargs):
    m = args[0]
    await m.delete()


@dp.message_handler(content_types=['text', 'sticker'])
@dp.throttled(anti_flood, rate=2) #rate это количество секунд, при котором входящие сообщения считаются флудом.
async def main(m: types.Message):
    return

#run
if __name__ == "__main__":
    executor.start_polling(dp, skip_updates=True)
  • Вопрос задан
  • 797 просмотров
Подписаться 1 Простой 1 комментарий
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы