diff --git a/.env.dist b/.env.dist
index f42c367..66435c3 100644
--- a/.env.dist
+++ b/.env.dist
@@ -1,3 +1,5 @@
-ADMIN_ID=12345678
+# ЭТО ПРИМЕР ФАЙЛА .env !! ВАМ НАДО ЭТОТ ФАЙЛ ПЕРЕИМЕНОВАТЬ И ВСТАВИТЬ ТУДА ЗНАЧЕНИЯ
+
+ADMINS=12345678,12345677,12345676
BOT_TOKEN=123452345243:Asdfasdfasf
ip=localhost
\ No newline at end of file
diff --git a/.gitignore b/.gitignore
index a66dec6..913d692 100644
--- a/.gitignore
+++ b/.gitignore
@@ -128,3 +128,4 @@ dmypy.json
# Pyre type checker
.pyre/
.idea/*
+.env
\ No newline at end of file
diff --git a/app.py b/app.py
index 08f8cf4..1c9cb0f 100644
--- a/app.py
+++ b/app.py
@@ -1,15 +1,19 @@
-async def on_startup(dp):
+from aiogram import executor
+
+from utils.notify_admins import on_startup_notify
+
+
+async def on_startup(dispatcher):
import filters
import middlewares
- filters.setup(dp)
- middlewares.setup(dp)
- from utils.notify_admins import on_startup_notify
- await on_startup_notify(dp)
+ filters.setup(dispatcher)
+ middlewares.setup(dispatcher)
+
+ await on_startup_notify(dispatcher)
if __name__ == '__main__':
- from aiogram import executor
from handlers import dp
executor.start_polling(dp, on_startup=on_startup)
diff --git a/data/config.py b/data/config.py
index eb58ca0..e216714 100644
--- a/data/config.py
+++ b/data/config.py
@@ -1,13 +1,9 @@
-import os
+from environs import Env
-from dotenv import load_dotenv
+# Теперь используем вместо библиотеки python-dotenv библиотеку environs
+env = Env()
+env.read_env()
-load_dotenv()
-
-BOT_TOKEN = os.getenv("BOT_TOKEN")
-
-admins = [
- os.getenv("ADMIN_ID"),
-]
-
-ip = os.getenv("ip")
+BOT_TOKEN = env.str("BOT_TOKEN") # Забираем значение типа str
+ADMINS = env.list("ADMINS") # Тут у нас будет список из админов
+IP = env.str("ip") # Тоже str, но для айпи адреса хоста
diff --git a/handlers/users/echo.py b/handlers/users/echo.py
index 93cd2fe..ede7e41 100644
--- a/handlers/users/echo.py
+++ b/handlers/users/echo.py
@@ -1,7 +1,21 @@
from aiogram import types
+from aiogram.dispatcher import FSMContext
+
from loader import dp
-@dp.message_handler()
+# Эхо хендлер, куда летят текстовые сообщения без указанного состояния
+@dp.message_handler(state=None)
async def bot_echo(message: types.Message):
- await message.answer(message.text)
+ await message.answer(f"Эхо без состояния."
+ f"Сообщение:\n"
+ f"{message.text}")
+
+
+# Эхо хендлер, куда летят ВСЕ сообщения с указанным состоянием
+@dp.message_handler(state="*", content_types=types.ContentTypes.ANY)
+async def bot_echo_all(message: types.Message, state: FSMContext):
+ s = await state.get_state()
+ await message.answer(f"Эхо в состоянии {s}
.\n"
+ f"\nСодержание сообщения:\n"
+ f"{message}
")
diff --git a/handlers/users/help.py b/handlers/users/help.py
index 7226861..6bb0360 100644
--- a/handlers/users/help.py
+++ b/handlers/users/help.py
@@ -2,10 +2,8 @@ from aiogram import types
from aiogram.dispatcher.filters.builtin import CommandHelp
from loader import dp
-from utils.misc import rate_limit
-@rate_limit(5, 'help')
@dp.message_handler(CommandHelp())
async def bot_help(message: types.Message):
text = [
diff --git a/middlewares/throttling.py b/middlewares/throttling.py
index 9013d47..5f54e0b 100644
--- a/middlewares/throttling.py
+++ b/middlewares/throttling.py
@@ -33,16 +33,5 @@ class ThrottlingMiddleware(BaseMiddleware):
raise CancelHandler()
async def message_throttled(self, message: types.Message, throttled: Throttled):
- handler = current_handler.get()
- dispatcher = Dispatcher.get_current()
- if handler:
- key = getattr(handler, 'throttling_key', f"{self.prefix}_{handler.__name__}")
- else:
- key = f"{self.prefix}_message"
- delta = throttled.rate - throttled.delta
if throttled.exceeded_count <= 2:
await message.reply('Too many requests! ')
- await asyncio.sleep(delta)
- thr = await dispatcher.check_key(key)
- if thr.exceeded_count == throttled.exceeded_count:
- await message.reply('Unlocked.')
diff --git a/requirements.txt b/requirements.txt
index 44a84cb..9723d39 100644
--- a/requirements.txt
+++ b/requirements.txt
@@ -1,4 +1,2 @@
-aiogram==2.11.2
-aiohttp>=3.6.2
-aioredis==1.3.1
-python-dotenv
+aiogram>=2.11.2,<3.0
+environs~=8.0.0
\ No newline at end of file
diff --git a/utils/misc/logging.py b/utils/misc/logging.py
index f7d49e9..e5b24b9 100644
--- a/utils/misc/logging.py
+++ b/utils/misc/logging.py
@@ -2,5 +2,5 @@ import logging
logging.basicConfig(format=u'%(filename)s [LINE:%(lineno)d] #%(levelname)-8s [%(asctime)s] %(message)s',
level=logging.INFO,
- # level=logging.DEBUG,
+ # level=logging.DEBUG, # Можно заменить на другой уровень логгирования.
)
diff --git a/utils/notify_admins.py b/utils/notify_admins.py
index c920196..97e1309 100644
--- a/utils/notify_admins.py
+++ b/utils/notify_admins.py
@@ -2,11 +2,11 @@ import logging
from aiogram import Dispatcher
-from data.config import admins
+from data.config import ADMINS
async def on_startup_notify(dp: Dispatcher):
- for admin in admins:
+ for admin in ADMINS:
try:
await dp.bot.send_message(admin, "Бот Запущен")