# █▀▀▄ █▀▄▀█ █▀█ █▀▄ █▀ # ▀▀▀█ ▄ █ ▀ █ █▄█ █▄▀ ▄█ # #### Copyright (c) 2025 Archquise ##### # 💬 Contact: https://t.me/archquise # 🔒 Licensed under the GNU AGPLv3. # 📄 LICENSE: https://raw.githubusercontent.com/archquise/Q.Mods/main/LICENSE # --------------------------------------------------------------------------------- # Name: IrisSimpleMod # Description: Module for basic interaction with Iris. # Author: @quise_m # --------------------------------------------------------------------------------- # meta developer: @quise_m # meta banner: https://raw.githubusercontent.com/archquise/qmods_meta/main/IrisSimpleMod.png # --------------------------------------------------------------------------------- import logging from .. import loader, utils __version__ = (1, 0, 1) logger = logging.getLogger(__name__) @loader.tds class IrisSimpleMod(loader.Module): """Module for basic interaction with Iris bot.""" strings = { # noqa: RUF012 "name": "IrisSimpleMod", "checking_bag": "🌎 Checking bag...", "bag_result": " Your bag: {}", "farming": "🌎 Farming iris-coins...", "farm_result": " Farm result: {}", "getting_stats": "🌎 Getting user stats...", "stats_result": " User stats: {}", "bot_stats": "🌎 Getting bot stats...", "bot_stats_result": " Bot stats: {}", "error_no_response": " No response from bot. Please try again.", "error_timeout": " Request timeout. Please try again.", "error_general": " An error occurred: {error}", } strings_ru = { # noqa: RUF012 "checking_bag": "🌎 Проверка мешка...", "bag_result": " Ваш мешок: {}", "farming": "🌎 Фарм ирис-коинов...", "farm_result": " Результат фарма: {}", "getting_stats": "🌎 Получение статистики пользователя...", "stats_result": " Статистика пользователя: {}", "bot_stats": "🌎 Получение статистики ботов...", "bot_stats_result": " Статистика ботов: {}", "error_no_response": " Нет ответа от бота. Попробуйте еще раз.", "error_timeout": " Таймаут запроса. Попробуйте еще раз.", "error_general": " Произошла ошибка: {error}", "_cls_doc": "Модуль для базового взаимодействия с Ирисом!", } async def _send_and_delete( self, message, command_message: str, response_timeout: int = 15, # noqa: ANN001 ) -> str | None: """Send command to Iris and get response with timeout.""" try: async with self.client.conversation( 707693258, timeout=response_timeout, ) as conv: msg = await conv.send_message(command_message) await msg.delete() response_msg = await conv.get_response() if response_msg: await utils.answer(message, response_msg.text) return response_msg.text return None except Exception as e: logger.exception("Error in conversation!") await utils.answer( message, self.strings["error_general"].format(error=str(e)), ) return None @loader.command( ru_doc="Проверить мешок", en_doc="Check bag", ) async def bag(self, message): # noqa: ANN001, ANN201 """Check bag.""" await utils.answer(message, self.strings["checking_bag"]) result = await self._send_and_delete(message, "мешок", response_timeout=20) if result: await utils.answer(message, self.strings["bag_result"].format(result)) @loader.command( ru_doc="Зафармить ирис-коины", en_doc="Farm iris-coins", ) async def farm(self, message): # noqa: ANN001, ANN201 """Farm iris-coins.""" await utils.answer(message, self.strings["farming"]) result = await self._send_and_delete(message, "ферма", response_timeout=25) if result: await utils.answer(message, self.strings["farm_result"].format(result)) @loader.command( ru_doc="Вывести анкету", en_doc="Display user stats", ) async def irisstats(self, message): # noqa: ANN001, ANN201 """Display user stats.""" await utils.answer(message, self.strings["getting_stats"]) result = await self._send_and_delete(message, "анкета", response_timeout=20) if result: await utils.answer(message, self.strings["stats_result"].format(result))