diff --git a/bozenka/features/admin/invite_generation.py b/bozenka/features/admin/invite_generation.py index b72f61f..fadbce6 100644 --- a/bozenka/features/admin/invite_generation.py +++ b/bozenka/features/admin/invite_generation.py @@ -6,6 +6,7 @@ from aiogram.types import Message, CallbackQuery, InlineKeyboardMarkup, InlineKe from bozenka.database.tables.telegram import TelegramChatSettings from bozenka.features.main import BasicFeature +from bozenka.instances.telegram.filters import IsSettingEnabled from bozenka.instances.telegram.utils.callbacks_factory import RevokeCallbackData, DeleteMenu @@ -85,7 +86,7 @@ class Invite(BasicFeature): # List of aiogram handlers telegram_message_handlers = [ # Format is [Handler, [Filters]] - [telegram_invite_command_handler, [Command(commands=["invite"])]] + [telegram_invite_command_handler, [Command(commands=["invite"]), IsSettingEnabled(telegram_db_name)]] ] telegram_callback_handlers = [ # Format is [Handler, [Filters]] diff --git a/bozenka/features/admin/moderation.py b/bozenka/features/admin/moderation.py index b3ca93f..212043c 100644 --- a/bozenka/features/admin/moderation.py +++ b/bozenka/features/admin/moderation.py @@ -9,7 +9,7 @@ from sqlalchemy.ext.asyncio import async_sessionmaker from bozenka.database.tables.telegram import get_chat_config_value, TelegramChatSettings from bozenka.features.main import BasicFeature from bozenka.instances.telegram.utils.callbacks_factory import UnbanData, BanData, UnmuteData, MuteData, DeleteMenu -from bozenka.instances.telegram.filters import IsAdminFilter, BotHasPermissions, UserHasPermissions +from bozenka.instances.telegram.filters import IsAdminFilter, BotHasPermissions, UserHasPermissions, IsSettingEnabled from bozenka.instances.telegram.utils.delete import delete_keyboard from bozenka.instances.telegram.utils.simpler import SolutionSimpler @@ -578,17 +578,19 @@ class Moderation(BasicFeature): # Format is [Handler, [Filters]] [telegram_ban_cmd_handler, [Command(commands="ban"), IsAdminFilter(True, True), F.reply_to_message.text, - ~(F.chat.type == ChatType.PRIVATE)]], + ~(F.chat.type == ChatType.PRIVATE)]], IsSettingEnabled(telegram_db_name) [telegram_unban_cmd_handler, [Command(commands="unban"), IsAdminFilter(True, True), F.reply_to_message.text, - ~(F.chat.type == ChatType.PRIVATE)]], + ~(F.chat.type == ChatType.PRIVATE), + IsSettingEnabled(telegram_db_name)]], [telegram_mute_cmd_handler, [Command(commands=["mute", "re"]), UserHasPermissions(["can_restrict_members"]), - BotHasPermissions(["can_restrict_members"]), ~(F.chat.type == ChatType.PRIVATE), F.reply_to_message.text]], + BotHasPermissions(["can_restrict_members"]), ~(F.chat.type == ChatType.PRIVATE), F.reply_to_message.text, + IsSettingEnabled(telegram_db_name)]], [telegram_unmute_cmd_handler, [Command(commands=["unmute"]), UserHasPermissions(["can_restrict_members"]), BotHasPermissions(["can_restrict_members"]), - ~(F.chat.type == ChatType.PRIVATE), F.reply_to_message.text]], + ~(F.chat.type == ChatType.PRIVATE), F.reply_to_message.text, IsSettingEnabled(telegram_db_name)]], [telegram_help_ban_handler, [Command(commands="ban"), IsAdminFilter(True, True), ~(F.chat.type == ChatType.PRIVATE)]], [telegram_help_unban_handler, diff --git a/bozenka/features/admin/msg_pins.py b/bozenka/features/admin/msg_pins.py index 25d345f..3e70730 100644 --- a/bozenka/features/admin/msg_pins.py +++ b/bozenka/features/admin/msg_pins.py @@ -6,7 +6,7 @@ from aiogram.types import Message, CallbackQuery, InlineKeyboardButton, InlineKe from bozenka.database.tables.telegram import TelegramChatSettings from bozenka.features.main import BasicFeature from bozenka.instances.telegram.utils.callbacks_factory import PinMsg, UnpinMsg, DeleteMenu -from bozenka.instances.telegram.filters import UserHasPermissions, BotHasPermissions, IsAdminFilter +from bozenka.instances.telegram.filters import UserHasPermissions, BotHasPermissions, IsAdminFilter, IsSettingEnabled from bozenka.instances.telegram.utils.delete import delete_keyboard from bozenka.instances.telegram.utils.simpler import SolutionSimpler @@ -162,17 +162,17 @@ class Pins(BasicFeature): # Format is [Handler, [Filters]] [telegram_pin_cmd, [Command(commands="pin"), UserHasPermissions(["can_pin_messages"]), BotHasPermissions(["can_pin_messages"]), F.reply_to_message, - ~(F.chat.type == ChatType.PRIVATE)]], + ~(F.chat.type == ChatType.PRIVATE), IsSettingEnabled(telegram_db_name)]], [telegram_unpin_cmd, [Command(commands="unpin"), UserHasPermissions(["can_pin_messages"]), BotHasPermissions(["can_pin_messages"]), F.reply_to_message, ~(F.chat.type == ChatType.PRIVATE)]], [telegram_unpinall_cmd, [Command(commands="unpin_all"), IsAdminFilter(True, False), BotHasPermissions(["can_pin_messages"]), F.reply_to_message.text, - ~(F.chat.type == ChatType.PRIVATE)]], + ~(F.chat.type == ChatType.PRIVATE), IsSettingEnabled(telegram_db_name)]], [telegram_help_pin_cmd, [Command(commands="pin"), UserHasPermissions(["can_pin_messages"]), BotHasPermissions(["can_pin_messages"]), ~(F.chat.type == ChatType.PRIVATE)]], [telegramm_help_unpin_cmd, [Command(commands="unpin"), UserHasPermissions(["can_pin_messages"]), - BotHasPermissions(["can_pin_messages"]), ~(F.chat.type == ChatType.PRIVATE)]] + BotHasPermissions(["can_pin_messages"]), ~(F.chat.type == ChatType.PRIVATE), IsSettingEnabled(telegram_db_name)]] ] telegram_callback_handlers = [ diff --git a/bozenka/features/admin/topics.py b/bozenka/features/admin/topics.py index 0ada18e..e204190 100644 --- a/bozenka/features/admin/topics.py +++ b/bozenka/features/admin/topics.py @@ -6,7 +6,7 @@ from aiogram.types import Message, CallbackQuery, InlineKeyboardButton, InlineKe from bozenka.database.tables.telegram import TelegramChatSettings from bozenka.features.main import BasicFeature from bozenka.instances.telegram.utils.callbacks_factory import CloseThread, OpenThread, DeleteMenu -from bozenka.instances.telegram.filters import UserHasPermissions, BotHasPermissions +from bozenka.instances.telegram.filters import UserHasPermissions, BotHasPermissions, IsSettingEnabled from bozenka.instances.telegram.utils.delete import delete_keyboard from bozenka.instances.telegram.utils.simpler import SolutionSimpler @@ -175,27 +175,27 @@ class Threads(BasicFeature): [telegram_close_topic_cmd_handler, [Command(commands=["close_topic", "close"]), UserHasPermissions(["can_manage_topics"]), BotHasPermissions(["can_manage_topics"]), F.chat.is_forum, - ~(F.chat.type == ChatType.PRIVATE)]], + ~(F.chat.type == ChatType.PRIVATE), IsSettingEnabled(telegram_db_name)]], [telegram_reopen_topic_cmd_handler, [Command(commands=["reopen_topic", "open_topic", "open"]), UserHasPermissions(["can_manage_topics"]), BotHasPermissions(["can_manage_topics"]), F.chat.is_forum, - ~(F.chat.type == ChatType.PRIVATE)]], + ~(F.chat.type == ChatType.PRIVATE), IsSettingEnabled(telegram_db_name)]], [telegram_close_general_topic_cmd_handler, [Command(commands=["close_general"]), UserHasPermissions(["can_manage_topics"]), BotHasPermissions(["can_manage_topics"]), - F.chat.is_forum]], + F.chat.is_forum], IsSettingEnabled(telegram_db_name)], [telegram_reopen_general_topic_cmd, [Command(commands=["reopen_general", "open_general"]), UserHasPermissions(["can_manage_topics"]), BotHasPermissions(["can_manage_topics"]), F.chat.is_forum, - ~(F.chat.type == ChatType.PRIVATE)]], + ~(F.chat.type == ChatType.PRIVATE), IsSettingEnabled(telegram_db_name)]], [telegram_hide_general_topic_cmd_handler, [Command(commands=["hide_general"]), UserHasPermissions(["can_manage_topics"]), BotHasPermissions(["can_manage_topics"]), F.chat.is_forum, - ~(F.chat.type == ChatType.PRIVATE)]], + ~(F.chat.type == ChatType.PRIVATE), IsSettingEnabled(telegram_db_name)]], [telegram_unhide_general_topic_cmd, [Command(commands=["unhide_general", "show_general"]), UserHasPermissions(["can_manage_topics"]), BotHasPermissions(["can_manage_topics"]), F.chat.is_forum, - ~(F.chat.type == ChatType.PRIVATE)]] + ~(F.chat.type == ChatType.PRIVATE), IsSettingEnabled(telegram_db_name)]] ] telegram_callback_handlers = [ [telegram_close_thread_callback_handler, [CloseThread.filter()]], diff --git a/bozenka/features/user/image_generation.py b/bozenka/features/user/image_generation.py index 0272853..2341e99 100644 --- a/bozenka/features/user/image_generation.py +++ b/bozenka/features/user/image_generation.py @@ -12,6 +12,7 @@ from bozenka.database.tables.telegram import TelegramChatSettings from bozenka.features.main import BasicFeature from bozenka.generative import image_generative_size, image_generative_categories from bozenka.generative.kadinsky import kadinsky_gen +from bozenka.instances.telegram.filters import IsSettingEnabled from bozenka.instances.telegram.utils.callbacks_factory import ImageGenerationCategory, ImageGeneration, DeleteMenu, \ GptStop from bozenka.instances.telegram.utils.delete import delete_keyboard @@ -192,7 +193,7 @@ class ImageGeneratrion(BasicFeature): telegram_cmd_avaible = True # Is a feature have a commands telegram_message_handlers = [ [telegram_kadinsky_generating_handler, [GeneratingImages.ready_to_generate, ~Command(commands=["cancel"])]], - [telegram_imagine_handler, [Command(commands=["imagine"])]] + [telegram_imagine_handler, [Command(commands=["imagine"]), IsSettingEnabled(telegram_db_name)]] ] telegram_callback_handlers = [ [telegram_select_image_size_handler, [ImageGenerationCategory.filter()]], diff --git a/bozenka/features/user/text_generation.py b/bozenka/features/user/text_generation.py index e17618a..10833c6 100644 --- a/bozenka/features/user/text_generation.py +++ b/bozenka/features/user/text_generation.py @@ -449,7 +449,7 @@ class TextGeneratrion(BasicFeature): if call.from_user.id != callback_data.user_id: return - await state.update_data(set_model=callback_data.model) + await state.update_data(model=callback_data.model) await state.set_state(AnsweringGPT4Free.ready_to_answer) await call.answer("Вы можете начать общаться 🤖") @@ -493,7 +493,7 @@ class TextGeneratrion(BasicFeature): level=logging.INFO) if type(callback_data) == GptCategory: - await state.update_data(set_category=callback_data.category) + await state.update_data(category=callback_data.category) await call.answer("Вы выбрали Gpt4Free 🤖") await call.message.edit_text("Выберите, по какому пункту мы будем вести диалог с нейронной сети 🤖", @@ -535,7 +535,7 @@ class TextGeneratrion(BasicFeature): logging.log(msg=f"Selected gpt4free provider {callback_data.provider} by user_id={call.from_user.id}", level=logging.INFO) - await state.update_data(set_provider=callback_data.provider) + await state.update_data(provider=callback_data.provider) await state.set_state(AnsweringGPT4Free.set_model) await call.message.edit_text("Выберите пожалуйста модель ИИ 👾", @@ -560,7 +560,7 @@ class TextGeneratrion(BasicFeature): logging.log(msg=f"Selected gpt4free model {callback_data.model} by user_id={call.from_user.id}", level=logging.INFO) - await state.update_data(set_model=callback_data.model) + await state.update_data(model=callback_data.model) await state.set_state(AnsweringGPT4Free.ready_to_answer) logging.log(msg=f"Loaded GPT answering status for user_id={call.from_user.id}", @@ -715,7 +715,7 @@ class TextGeneratrion(BasicFeature): """ if callback_data.user_id != call.from_user.id: return - await state.update_data(set_model=callback_data.index) + await state.update_data(model=callback_data.index) await state.set_state(AnsweringGpt4All.ready_to_answer) models = GPT4All.list_models() diff --git a/bozenka/features/user/welcome.py b/bozenka/features/user/welcome.py index facfa60..4fdf21a 100644 --- a/bozenka/features/user/welcome.py +++ b/bozenka/features/user/welcome.py @@ -7,6 +7,7 @@ from sqlalchemy.ext.asyncio import async_sessionmaker from bozenka.database.tables.telegram import TelegramChatSettings from bozenka.features.main import BasicFeature +from bozenka.instances.telegram.filters import IsSettingEnabled from bozenka.instances.telegram.utils.simpler import SolutionSimpler @@ -62,13 +63,14 @@ class Welcome(BasicFeature): telegram_setting = TelegramChatSettings.welcome_messages telegram_category = "user" telegram_commands: dict[str: str] = {} + telegram_db_name = TelegramChatSettings.welcome_messages telegram_setting_in_list = True telegram_setting_name = "Приветсвенные сообщения 👋" telegram_setting_description = "Приветсвенные сообщения 👋" \ "\nПриветсвенные сообщения новым и ушедшим пользователям.", telegram_cmd_avaible = False # Is a feature have a commands telegram_message_handlers = [ - [telegram_leave_handler, [F.content_type == ContentType.LEFT_CHAT_MEMBER]], - [telegram_join_handler, [F.content_type == ContentType.NEW_CHAT_MEMBERS]] + [telegram_leave_handler, [F.content_type == ContentType.LEFT_CHAT_MEMBER, IsSettingEnabled(telegram_db_name)]], + [telegram_join_handler, [F.content_type == ContentType.NEW_CHAT_MEMBERS, IsSettingEnabled(telegram_db_name)]] ] telegram_callback_handlers = [] diff --git a/bozenka/instances/telegram/filters/chat_setting.py b/bozenka/instances/telegram/filters/chat_setting.py index eb44b3b..1c9fdfe 100644 --- a/bozenka/instances/telegram/filters/chat_setting.py +++ b/bozenka/instances/telegram/filters/chat_setting.py @@ -1,3 +1,4 @@ +from aiogram.enums import ChatType from aiogram.filters import Filter from aiogram.types import Message from sqlalchemy.ext.asyncio import async_sessionmaker @@ -20,6 +21,8 @@ class IsSettingEnabled(Filter): :param session_maker: AsyncSessionMaker SqlAlchemy object :return: Is config enabled """ - - return await get_chat_config_value(chat_id=msg.chat.id, session=session_maker, setting=self.setting) + if msg.chat.type != ChatType.PRIVATE: + return await get_chat_config_value(chat_id=msg.chat.id, session=session_maker, setting=self.setting) + else: + return True