base: add api version test

parent 86fd4380
......@@ -150,6 +150,7 @@ class SiteInfo:
class ALTRepoAPI:
def __init__(self, session: aiohttp.ClientSession):
self.BASE_API_VERSION = "1.19.31"
self._client = BaseAPI(session)
self.api = APIInfo(self._client)
self.package = PackageInfo(self._client)
......
......@@ -8,7 +8,12 @@ dp = Dispatch()
@dp.message(Command("altrepo_info"))
async def info_handler(m: Message) -> None:
api_data = await altrepo.api.version()
warn = (
f"Бот разработан под версию API {altrepo.api.BASE_API_VERSION} и может работать нестабильно.\n"
"Разработчик уже уведомлён."
)
await m.answer(
"Telegram бот для портала packages.altlinux.org\n"
f"Версия API: {api_data.version}"
f"Версия API: {api_data.version}\n\n"
f"{warn if api_data.version != altrepo.api.BASE_API_VERSION else ""}"
)
......@@ -9,6 +9,8 @@ from altrepo.api.errors import TooManyRequests
from database.models import db, User
from middlewares import UserMiddleware
from services.test_api_version import test_api_version
bot = Telegrinder(tg_api)
bot.dispatch.load_from_dir("src/handlers")
......@@ -19,6 +21,7 @@ async def startup():
db.create_tables([User])
logger.info("initializing ALTRepo")
await altrepo.init()
await test_api_version()
await bot.api.set_my_commands(commands=[
BotCommand("watch", "Отслеживание по пакетам"),
BotCommand("bugs", "Отслеживание по ошибкам")
......@@ -29,6 +32,10 @@ async def shutdown():
logger.info("stopping ALTRepo")
await altrepo.close()
@bot.loop_wrapper.interval(days=1)
async def api_test():
await test_api_version()
@bot.on.error()
async def error_handler(err: Error[TooManyRequests], m: Message):
await m.answer(f"Слишком много запросов!")
......
from telegrinder.modules import logger
from config import config, tg_api
from altrepo import altrepo
async def test_api_version():
api_data = await altrepo.api.version()
if api_data.version != altrepo.api.BASE_API_VERSION:
logger.error(
f"The API version is outdated: {altrepo.api.BASE_API_VERSION} -> {api_data.version}")
for adm_id in config.admins:
await tg_api.send_message(
chat_id=adm_id,
text=f"[ERROR] Версия API устарела: {altrepo.api.BASE_API_VERSION} -> {api_data.version}"
)
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment