From b11b3ab16d8cd128cf7a05b963be9e233cd72593 Mon Sep 17 00:00:00 2001 From: Kirill Kirilenko Date: Sun, 21 Sep 2025 20:11:33 +0300 Subject: [PATCH] =?UTF-8?q?=D0=94=D0=BE=D0=B1=D0=B0=D0=B2=D0=BB=D0=B5?= =?UTF-8?q?=D0=BD=D0=B0=20=D0=BA=D0=BE=D0=BC=D0=B0=D0=BD=D0=B4=D0=B0=20?= =?UTF-8?q?=D0=B8=D1=81=D0=BA=D0=BB=D1=8E=D1=87=D0=B5=D0=BD=D0=B8=D1=8F=20?= =?UTF-8?q?=D1=83=D1=87=D0=B0=D1=81=D1=82=D0=BD=D0=B8=D0=BA=D0=B0.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- handlers/admin.py | 35 ++++++++++++++++++++++++++++++++++- handlers/user.py | 1 + 2 files changed, 35 insertions(+), 1 deletion(-) diff --git a/handlers/admin.py b/handlers/admin.py index 2c5a5a7..56ae675 100644 --- a/handlers/admin.py +++ b/handlers/admin.py @@ -1,4 +1,4 @@ -from vkbottle import bold +from vkbottle import bold, VKAPIError from vkbottle.bot import Message from vkbottle_types.codegen.objects import MessagesGetConversationMembers @@ -157,3 +157,36 @@ async def warning_handler(message: Message): user['warnings'], utils.make_word_agree_with_number(user['warnings'], 'предупреждение')) ) + + +@labeler.chat_message(text="!исключить") +async def ban_handler(message: Message): + chat_id = message.peer_id + chat = database.create_chat_if_not_exists(chat_id) + if chat['active'] == 0: + await message.answer(MESSAGE_CHAT_NOT_ACTIVE) + return + + chat_members = await message.ctx_api.messages.get_conversation_members(peer_id=chat_id, extended=False) + + if not vk_user_is_admin(message.from_id, chat_members): + await message.answer(MESSAGE_PERMISSION_DENIED) + return + + if message.reply_message is None: + await message.answer(MESSAGE_NEED_REPLY) + return + + user_id = message.reply_message.from_id + + try: + await message.ctx_api.messages.remove_chat_user(chat_id - 2000000000, member_id=user_id) + + if user_id > 0: + database.DB.delete_user(chat_id, user_id) + + user_info = await message.ctx_api.users.get(user_ids=[user_id]) + await message.answer('Участник {} {} исключен.'.format(user_info[0].first_name, user_info[0].last_name)) + except VKAPIError as e: + print(e) + await message.answer('Извините, у меня не получилось исключить этого участника.') diff --git a/handlers/user.py b/handlers/user.py index 152adbd..03d9c17 100644 --- a/handlers/user.py +++ b/handlers/user.py @@ -57,6 +57,7 @@ async def rules_handler(message: Message): response += '!возвращение* - изменить приветствие при возвращении\n' response += '!деньрождения* - изменить уведомление о дне рождения\n' response += '!предупреждение* - выдать предупреждение участнику\n' + response += '!исключить* - навсегда исключить участника\n' response += '\n' response += italic('Команды с пометкой * нужно вызывать в ответном сообщении.')