Source code for quackamollie.core.bot.callback.info_callback
# -*- coding: utf-8 -*-
""" Module for the `Info` section of the `/settings` Telegram bot command """
__all__ = ["info_router", "info_callback_handler"]
__author__ = "QuacktorAI"
__copyright__ = "Copyright 2024, Forge of Absurd Ducks"
__credits__ = ["QuacktorAI"]
from aiogram import F, Router
from aiogram.enums import ParseMode
from aiogram.types import CallbackQuery
from quackamollie.core import core_version
from quackamollie.core.bot.bot_info import QuackamollieBotData
from quackamollie.core.bot.decorator.permissions import permission_authorized
from quackamollie.core.bot.menu.settings_menu import SettingsCallbackData
from quackamollie.core.cli.settings import pass_quackamollie_settings, QuackamollieSettings
info_router = Router()
[docs]
@info_router.callback_query(SettingsCallbackData.filter(F.name == "info"))
@permission_authorized
@pass_quackamollie_settings
async def info_callback_handler(quackamollie_settings: QuackamollieSettings, query: CallbackQuery):
""" Callback query handler for the "Info" section of the bot. Show general information about the bot and if the
user is an admin or a moderator, it shows also the current running version of `quackamollie-core`.
:param quackamollie_settings: The application settings initialized from click context
:type quackamollie_settings: QuackamollieSettings
:param query: A callback query given by aiogram
:type query: CallbackQuery
"""
mention = QuackamollieBotData().bot_mention # Get the bot name with '@'
info: str = f"The bot {mention} is an instance of the open source project <i>Quackamollie</i>."
# If the user is an admin or a moderator, we show the current core version
user_id: int = query.from_user.id
if user_id in quackamollie_settings.admin_ids or user_id in quackamollie_settings.moderator_ids:
info += f" This current instance uses <code>quackamollie-core</code> version <code>{core_version}</code>."
info += ("\n\n<i>Quackamollie</i> is a project by the"
" <a href='https://gitlab.com/forge_of_absurd_ducks'>Forge of Absurd Ducks</a>.\n"
"<a href='https://gitlab.com/forge_of_absurd_ducks/quackamollie/quackamollie'>Source code</a> is under"
" <a href='https://gitlab.com/forge_of_absurd_ducks/quackamollie/quackamollie/LICENSE'>MIT License</a>.")
await query.message.answer(info, parse_mode=ParseMode.HTML, disable_web_page_preview=True)
await query.answer() # To complete CallbackQuery loading bar