fixed source code!

This commit is contained in:
kittyneverdies 2024-02-16 20:51:18 +03:00
parent c5a8fed76f
commit 6a435cfcbd
8 changed files with 36 additions and 27 deletions

View File

@ -6,6 +6,7 @@ from aiogram.types import Message, CallbackQuery, InlineKeyboardMarkup, InlineKe
from bozenka.database.tables.telegram import TelegramChatSettings from bozenka.database.tables.telegram import TelegramChatSettings
from bozenka.features.main import BasicFeature from bozenka.features.main import BasicFeature
from bozenka.instances.telegram.filters import IsSettingEnabled
from bozenka.instances.telegram.utils.callbacks_factory import RevokeCallbackData, DeleteMenu from bozenka.instances.telegram.utils.callbacks_factory import RevokeCallbackData, DeleteMenu
@ -85,7 +86,7 @@ class Invite(BasicFeature):
# List of aiogram handlers # List of aiogram handlers
telegram_message_handlers = [ telegram_message_handlers = [
# Format is [Handler, [Filters]] # 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 = [ telegram_callback_handlers = [
# Format is [Handler, [Filters]] # Format is [Handler, [Filters]]

View File

@ -9,7 +9,7 @@ from sqlalchemy.ext.asyncio import async_sessionmaker
from bozenka.database.tables.telegram import get_chat_config_value, TelegramChatSettings from bozenka.database.tables.telegram import get_chat_config_value, TelegramChatSettings
from bozenka.features.main import BasicFeature from bozenka.features.main import BasicFeature
from bozenka.instances.telegram.utils.callbacks_factory import UnbanData, BanData, UnmuteData, MuteData, DeleteMenu 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.delete import delete_keyboard
from bozenka.instances.telegram.utils.simpler import SolutionSimpler from bozenka.instances.telegram.utils.simpler import SolutionSimpler
@ -578,17 +578,19 @@ class Moderation(BasicFeature):
# Format is [Handler, [Filters]] # Format is [Handler, [Filters]]
[telegram_ban_cmd_handler, [Command(commands="ban"), [telegram_ban_cmd_handler, [Command(commands="ban"),
IsAdminFilter(True, True), F.reply_to_message.text, 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"), [telegram_unban_cmd_handler, [Command(commands="unban"),
IsAdminFilter(True, True), F.reply_to_message.text, 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"]), [telegram_mute_cmd_handler, [Command(commands=["mute", "re"]),
UserHasPermissions(["can_restrict_members"]), 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"]), [telegram_unmute_cmd_handler, [Command(commands=["unmute"]),
UserHasPermissions(["can_restrict_members"]), UserHasPermissions(["can_restrict_members"]),
BotHasPermissions(["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, [telegram_help_ban_handler,
[Command(commands="ban"), IsAdminFilter(True, True), ~(F.chat.type == ChatType.PRIVATE)]], [Command(commands="ban"), IsAdminFilter(True, True), ~(F.chat.type == ChatType.PRIVATE)]],
[telegram_help_unban_handler, [telegram_help_unban_handler,

View File

@ -6,7 +6,7 @@ from aiogram.types import Message, CallbackQuery, InlineKeyboardButton, InlineKe
from bozenka.database.tables.telegram import TelegramChatSettings from bozenka.database.tables.telegram import TelegramChatSettings
from bozenka.features.main import BasicFeature from bozenka.features.main import BasicFeature
from bozenka.instances.telegram.utils.callbacks_factory import PinMsg, UnpinMsg, DeleteMenu 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.delete import delete_keyboard
from bozenka.instances.telegram.utils.simpler import SolutionSimpler from bozenka.instances.telegram.utils.simpler import SolutionSimpler
@ -162,17 +162,17 @@ class Pins(BasicFeature):
# Format is [Handler, [Filters]] # Format is [Handler, [Filters]]
[telegram_pin_cmd, [Command(commands="pin"), UserHasPermissions(["can_pin_messages"]), [telegram_pin_cmd, [Command(commands="pin"), UserHasPermissions(["can_pin_messages"]),
BotHasPermissions(["can_pin_messages"]), F.reply_to_message, 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"]), [telegram_unpin_cmd, [Command(commands="unpin"), UserHasPermissions(["can_pin_messages"]),
BotHasPermissions(["can_pin_messages"]), F.reply_to_message, BotHasPermissions(["can_pin_messages"]), F.reply_to_message,
~(F.chat.type == ChatType.PRIVATE)]], ~(F.chat.type == ChatType.PRIVATE)]],
[telegram_unpinall_cmd, [Command(commands="unpin_all"), IsAdminFilter(True, False), [telegram_unpinall_cmd, [Command(commands="unpin_all"), IsAdminFilter(True, False),
BotHasPermissions(["can_pin_messages"]), F.reply_to_message.text, 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"]), [telegram_help_pin_cmd, [Command(commands="pin"), UserHasPermissions(["can_pin_messages"]),
BotHasPermissions(["can_pin_messages"]), ~(F.chat.type == ChatType.PRIVATE)]], BotHasPermissions(["can_pin_messages"]), ~(F.chat.type == ChatType.PRIVATE)]],
[telegramm_help_unpin_cmd, [Command(commands="unpin"), UserHasPermissions(["can_pin_messages"]), [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 = [ telegram_callback_handlers = [

View File

@ -6,7 +6,7 @@ from aiogram.types import Message, CallbackQuery, InlineKeyboardButton, InlineKe
from bozenka.database.tables.telegram import TelegramChatSettings from bozenka.database.tables.telegram import TelegramChatSettings
from bozenka.features.main import BasicFeature from bozenka.features.main import BasicFeature
from bozenka.instances.telegram.utils.callbacks_factory import CloseThread, OpenThread, DeleteMenu 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.delete import delete_keyboard
from bozenka.instances.telegram.utils.simpler import SolutionSimpler 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"]), [telegram_close_topic_cmd_handler, [Command(commands=["close_topic", "close"]),
UserHasPermissions(["can_manage_topics"]), UserHasPermissions(["can_manage_topics"]),
BotHasPermissions(["can_manage_topics"]), F.chat.is_forum, 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"]), [telegram_reopen_topic_cmd_handler, [Command(commands=["reopen_topic", "open_topic", "open"]),
UserHasPermissions(["can_manage_topics"]), UserHasPermissions(["can_manage_topics"]),
BotHasPermissions(["can_manage_topics"]), F.chat.is_forum, 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"]), [telegram_close_general_topic_cmd_handler, [Command(commands=["close_general"]),
UserHasPermissions(["can_manage_topics"]), UserHasPermissions(["can_manage_topics"]),
BotHasPermissions(["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"]), [telegram_reopen_general_topic_cmd, [Command(commands=["reopen_general", "open_general"]),
UserHasPermissions(["can_manage_topics"]), UserHasPermissions(["can_manage_topics"]),
BotHasPermissions(["can_manage_topics"]), F.chat.is_forum, 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"]), [telegram_hide_general_topic_cmd_handler, [Command(commands=["hide_general"]),
UserHasPermissions(["can_manage_topics"]), UserHasPermissions(["can_manage_topics"]),
BotHasPermissions(["can_manage_topics"]), F.chat.is_forum, 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"]), [telegram_unhide_general_topic_cmd, [Command(commands=["unhide_general", "show_general"]),
UserHasPermissions(["can_manage_topics"]), UserHasPermissions(["can_manage_topics"]),
BotHasPermissions(["can_manage_topics"]), F.chat.is_forum, 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_callback_handlers = [
[telegram_close_thread_callback_handler, [CloseThread.filter()]], [telegram_close_thread_callback_handler, [CloseThread.filter()]],

View File

@ -12,6 +12,7 @@ from bozenka.database.tables.telegram import TelegramChatSettings
from bozenka.features.main import BasicFeature from bozenka.features.main import BasicFeature
from bozenka.generative import image_generative_size, image_generative_categories from bozenka.generative import image_generative_size, image_generative_categories
from bozenka.generative.kadinsky import kadinsky_gen 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, \ from bozenka.instances.telegram.utils.callbacks_factory import ImageGenerationCategory, ImageGeneration, DeleteMenu, \
GptStop GptStop
from bozenka.instances.telegram.utils.delete import delete_keyboard 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_cmd_avaible = True # Is a feature have a commands
telegram_message_handlers = [ telegram_message_handlers = [
[telegram_kadinsky_generating_handler, [GeneratingImages.ready_to_generate, ~Command(commands=["cancel"])]], [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_callback_handlers = [
[telegram_select_image_size_handler, [ImageGenerationCategory.filter()]], [telegram_select_image_size_handler, [ImageGenerationCategory.filter()]],

View File

@ -449,7 +449,7 @@ class TextGeneratrion(BasicFeature):
if call.from_user.id != callback_data.user_id: if call.from_user.id != callback_data.user_id:
return 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 state.set_state(AnsweringGPT4Free.ready_to_answer)
await call.answer("Вы можете начать общаться 🤖") await call.answer("Вы можете начать общаться 🤖")
@ -493,7 +493,7 @@ class TextGeneratrion(BasicFeature):
level=logging.INFO) level=logging.INFO)
if type(callback_data) == GptCategory: 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.answer("Вы выбрали Gpt4Free 🤖")
await call.message.edit_text("Выберите, по какому пункту мы будем вести диалог с нейронной сети 🤖", 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}", logging.log(msg=f"Selected gpt4free provider {callback_data.provider} by user_id={call.from_user.id}",
level=logging.INFO) 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 state.set_state(AnsweringGPT4Free.set_model)
await call.message.edit_text("Выберите пожалуйста модель ИИ 👾", 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}", logging.log(msg=f"Selected gpt4free model {callback_data.model} by user_id={call.from_user.id}",
level=logging.INFO) 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) await state.set_state(AnsweringGPT4Free.ready_to_answer)
logging.log(msg=f"Loaded GPT answering status for user_id={call.from_user.id}", 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: if callback_data.user_id != call.from_user.id:
return 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) await state.set_state(AnsweringGpt4All.ready_to_answer)
models = GPT4All.list_models() models = GPT4All.list_models()

View File

@ -7,6 +7,7 @@ from sqlalchemy.ext.asyncio import async_sessionmaker
from bozenka.database.tables.telegram import TelegramChatSettings from bozenka.database.tables.telegram import TelegramChatSettings
from bozenka.features.main import BasicFeature from bozenka.features.main import BasicFeature
from bozenka.instances.telegram.filters import IsSettingEnabled
from bozenka.instances.telegram.utils.simpler import SolutionSimpler from bozenka.instances.telegram.utils.simpler import SolutionSimpler
@ -62,13 +63,14 @@ class Welcome(BasicFeature):
telegram_setting = TelegramChatSettings.welcome_messages telegram_setting = TelegramChatSettings.welcome_messages
telegram_category = "user" telegram_category = "user"
telegram_commands: dict[str: str] = {} telegram_commands: dict[str: str] = {}
telegram_db_name = TelegramChatSettings.welcome_messages
telegram_setting_in_list = True telegram_setting_in_list = True
telegram_setting_name = "Приветсвенные сообщения 👋" telegram_setting_name = "Приветсвенные сообщения 👋"
telegram_setting_description = "<b>Приветсвенные сообщения 👋</b>" \ telegram_setting_description = "<b>Приветсвенные сообщения 👋</b>" \
"\nПриветсвенные сообщения новым и ушедшим пользователям.", "\nПриветсвенные сообщения новым и ушедшим пользователям.",
telegram_cmd_avaible = False # Is a feature have a commands telegram_cmd_avaible = False # Is a feature have a commands
telegram_message_handlers = [ telegram_message_handlers = [
[telegram_leave_handler, [F.content_type == ContentType.LEFT_CHAT_MEMBER]], [telegram_leave_handler, [F.content_type == ContentType.LEFT_CHAT_MEMBER, IsSettingEnabled(telegram_db_name)]],
[telegram_join_handler, [F.content_type == ContentType.NEW_CHAT_MEMBERS]] [telegram_join_handler, [F.content_type == ContentType.NEW_CHAT_MEMBERS, IsSettingEnabled(telegram_db_name)]]
] ]
telegram_callback_handlers = [] telegram_callback_handlers = []

View File

@ -1,3 +1,4 @@
from aiogram.enums import ChatType
from aiogram.filters import Filter from aiogram.filters import Filter
from aiogram.types import Message from aiogram.types import Message
from sqlalchemy.ext.asyncio import async_sessionmaker from sqlalchemy.ext.asyncio import async_sessionmaker
@ -20,6 +21,8 @@ class IsSettingEnabled(Filter):
:param session_maker: AsyncSessionMaker SqlAlchemy object :param session_maker: AsyncSessionMaker SqlAlchemy object
:return: Is config enabled :return: Is config enabled
""" """
if msg.chat.type != ChatType.PRIVATE:
return await get_chat_config_value(chat_id=msg.chat.id, session=session_maker, setting=self.setting) return await get_chat_config_value(chat_id=msg.chat.id, session=session_maker, setting=self.setting)
else:
return True