From f43aee3e57248f728a768b2dd7faeb942ebc2918 Mon Sep 17 00:00:00 2001 From: dize_dev Date: Sun, 29 Oct 2023 22:54:12 +0600 Subject: [PATCH] =?UTF-8?q?=D0=B1=D0=BE=D1=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .idea/.gitignore | 3 + .idea/UserVKBot.iml | 10 +++ .idea/discord.xml | 7 ++ .../inspectionProfiles/profiles_settings.xml | 6 ++ .idea/misc.xml | 4 + .idea/modules.xml | 8 ++ config.py | 24 ++++++ custom_rules/permission.py | 23 +++++ main.py | 15 ++++ routes/__init__.py | 3 + routes/deletedmsg.py | 48 +++++++++++ routes/game_handler.py | 85 +++++++++++++++++++ routes/info_bot.py | 11 +++ routes/trusted.py | 0 user_ids.json | 1 + 15 files changed, 248 insertions(+) create mode 100644 .idea/.gitignore create mode 100644 .idea/UserVKBot.iml create mode 100644 .idea/discord.xml create mode 100644 .idea/inspectionProfiles/profiles_settings.xml create mode 100644 .idea/misc.xml create mode 100644 .idea/modules.xml create mode 100644 config.py create mode 100644 custom_rules/permission.py create mode 100644 main.py create mode 100644 routes/__init__.py create mode 100644 routes/deletedmsg.py create mode 100644 routes/game_handler.py create mode 100644 routes/info_bot.py create mode 100644 routes/trusted.py create mode 100644 user_ids.json diff --git a/.idea/.gitignore b/.idea/.gitignore new file mode 100644 index 0000000..26d3352 --- /dev/null +++ b/.idea/.gitignore @@ -0,0 +1,3 @@ +# Default ignored files +/shelf/ +/workspace.xml diff --git a/.idea/UserVKBot.iml b/.idea/UserVKBot.iml new file mode 100644 index 0000000..74d515a --- /dev/null +++ b/.idea/UserVKBot.iml @@ -0,0 +1,10 @@ + + + + + + + + + + \ No newline at end of file diff --git a/.idea/discord.xml b/.idea/discord.xml new file mode 100644 index 0000000..30bab2a --- /dev/null +++ b/.idea/discord.xml @@ -0,0 +1,7 @@ + + + + + \ No newline at end of file diff --git a/.idea/inspectionProfiles/profiles_settings.xml b/.idea/inspectionProfiles/profiles_settings.xml new file mode 100644 index 0000000..105ce2d --- /dev/null +++ b/.idea/inspectionProfiles/profiles_settings.xml @@ -0,0 +1,6 @@ + + + + \ No newline at end of file diff --git a/.idea/misc.xml b/.idea/misc.xml new file mode 100644 index 0000000..8da2b3d --- /dev/null +++ b/.idea/misc.xml @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/.idea/modules.xml b/.idea/modules.xml new file mode 100644 index 0000000..b0fc048 --- /dev/null +++ b/.idea/modules.xml @@ -0,0 +1,8 @@ + + + + + + + + \ No newline at end of file diff --git a/config.py b/config.py new file mode 100644 index 0000000..0f21405 --- /dev/null +++ b/config.py @@ -0,0 +1,24 @@ +from vkbottle.user import UserLabeler, Message, User + +TOKEN = 'vk1.a.4nNdLuOJin9tn71J-cKGu6MKCR2rNHkdRPn4lbW28CS9aL0Q-rhG3ZQi6UQnV9ClpBrNp2obRUltWREoSuwz2Km7OXGlBaP3jt9KsEeut4N3OvHWoTUuqNEtiRrgz2koSrPXLEJZ8i974KD2CgXWqmX4IsSC3kCMDK_aS1xetU3S38-Z1JFyNZu5Tl8yUGopptCjEqA9jF8CjznWv1gC2A' + +bl = UserLabeler() + +user = User(token=TOKEN) + + +async def edit_message( + message: Message, + text: str = '', + **kwargs +) -> int: + kwargs.setdefault('message_id', message.id) + kwargs.setdefault('message', text) + kwargs.setdefault('peer_id', message.peer_id) + kwargs.setdefault('keep_forward_messages', True) + kwargs.setdefault('keep_snippets', True) + kwargs.setdefault('dont_parse_links', False) + + return await user.api.messages.edit( + **kwargs + ) diff --git a/custom_rules/permission.py b/custom_rules/permission.py new file mode 100644 index 0000000..c15dc8c --- /dev/null +++ b/custom_rules/permission.py @@ -0,0 +1,23 @@ +from vkbottle.dispatch.rules import ABCRule +from vkbottle.user import Message +import json + + + +class Permission(ABCRule[Message]): + def __init__(self): + self.trusted_ids = self.load_trusted_ids() + + def load_trusted_ids(self): + try: + with open("./user_ids.json", "r") as json_file: + data = json.load(json_file) + return data + except FileNotFoundError: + # Если файл не существует, вернуть пустой список + return [] + + async def check(self, event: Message) -> bool: + return event.from_id in self.trusted_ids + + diff --git a/main.py b/main.py new file mode 100644 index 0000000..9289adf --- /dev/null +++ b/main.py @@ -0,0 +1,15 @@ +import sys +import asyncio +from config import user +from routes import labelers +from loguru import logger + +logger.add(sys.stderr, format="{time} {level} {message}", filter="my_module", level="INFO") + +for custom_labeler in labelers: + user.labeler.load(custom_labeler) + +if __name__ == "__main__": + loop = asyncio.get_event_loop() + loop.create_task(user.run_polling()) + loop.run_forever() diff --git a/routes/__init__.py b/routes/__init__.py new file mode 100644 index 0000000..947b89d --- /dev/null +++ b/routes/__init__.py @@ -0,0 +1,3 @@ +from . import game_handler, deletedmsg, info_bot + +labelers = [game_handler.bl, deletedmsg.bl, info_bot.bl] diff --git a/routes/deletedmsg.py b/routes/deletedmsg.py new file mode 100644 index 0000000..7ac37a7 --- /dev/null +++ b/routes/deletedmsg.py @@ -0,0 +1,48 @@ +import datetime +from custom_rules.permission import Permission +from vkbottle.user import Message +from config import bl, user + +DD_SCRIPT = ( + 'var i = 0;var msg_ids = [];var count = %d;' + 'var items = API.messages.getHistory({"peer_id":%d,"count":"200", "offset":"0"}).items;' + 'while (count > 0 && i < items.length) {if (items[i].out == 1) {if (items[i].id == %d) {' + 'if (items[i].reply_message) {msg_ids.push(items[i].id);msg_ids.push(items[i].reply_message.id);' + 'count = 0;};if (items[i].fwd_messages) {msg_ids.push(items[i].id);var j = 0;while (j < ' + 'items[i].fwd_messages.length) {msg_ids.push(items[i].fwd_messages[j].id);j = j + 1;};count = 0;};};' + 'msg_ids.push(items[i].id);count = count - 1;};if ((%d - items[i].date) > 86400) {count = 0;};i = i + 1;};' + 'API.messages.delete({"message_ids": msg_ids});return count;' +) + +prefix = "дд" + + +@bl.message( + Permission(), + text=[prefix + " "], +) +async def dd_handler(message: Message, count: int = 2): + await user.api.execute( + DD_SCRIPT % ( + count, + message.peer_id, + message.from_id, + int(datetime.datetime.now().timestamp()) + ) + ) + + +@bl.message( + Permission(), + text=["все", "всё"], +) +async def dd_all_handler(message: Message): + count = 1000 + await user.api.execute( + DD_SCRIPT % ( + count, + message.peer_id, + message.from_id, + int(datetime.datetime.now().timestamp()) + ) + ) diff --git a/routes/game_handler.py b/routes/game_handler.py new file mode 100644 index 0000000..6ec9d5f --- /dev/null +++ b/routes/game_handler.py @@ -0,0 +1,85 @@ +import asyncio +from vkbottle.user import Message +from config import bl, edit_message +from custom_rules.permission import Permission + + +@bl.message(Permission(), text="игра") +async def game(message: Message): + loader = ( + '⬜⬜⬜⬜⬜⬜⬜⬜⬛⬛⬜⬜⬜⬜⬜⬜⬜', + """ + ⬜⬜⬜⬜⬜⬜⬜⬜⬛⬛⬜⬜⬜⬜⬜⬜⬜ + ⬜⬜⬜⬜⬜⬜⬜⬛✊✊⬛⬜⬜⬜⬜⬜⬜ + """, + """ + + ⬜⬜⬜⬜⬜⬜⬜⬜⬛⬛⬜⬜⬜⬜⬜⬜⬜ + ⬜⬜⬜⬜⬜⬜⬜⬜⬛⬛⬜⬜⬜⬜⬜⬜⬜ + ⬜⬜⬜⬜⬜⬜⬜⬛✊✊⬛⬜⬜⬜⬜⬜⬜ + ⬜⬜⬜⬜⬜⬜⬜⬛✊✊⬛⬜⬜⬜⬜⬜⬜ + ⬜⬜⬜⬜⬜⬜⬜⬛✊✊⬛⬜⬜⬜⬜⬜⬜ + ⬜⬜⬜⬜⬜⬜⬜⬛✊✊⬛⬜⬜⬜⬜⬜⬜ + + """, + """ + ⬜⬜⬜⬜⬜⬜⬜⬜⬛⬛⬜⬜⬜⬜⬜⬜⬜ + ⬜⬜⬜⬜⬜⬜⬜⬜⬛⬛⬜⬜⬜⬜⬜⬜⬜ + ⬜⬜⬜⬜⬜⬜⬜⬛✊✊⬛⬜⬜⬜⬜⬜⬜ + ⬜⬜⬜⬜⬜⬜⬜⬛✊✊⬛⬜⬜⬜⬜⬜⬜ + ⬜⬜⬜⬜⬜⬜⬜⬛✊✊⬛⬜⬜⬜⬜⬜⬜ + ⬜⬜⬜⬜⬜⬜⬜⬛✊✊⬛⬜⬜⬜⬜⬜⬜ + ⬜⬜⬜⬜⬜⬜⬜⬛✊✊⬛⬜⬜⬜⬜⬜⬜ + ⬜⬜⬜⬜⬜⬛⬛⬛✊✊⬛⬛⬛⬜⬜⬜⬜ + ⬜⬜⬜⬜⬛✊✊⬛✊✊⬛✊✊⬛⬛⬛⬜ + ⬜⬜⬜⬜⬛✊✊⬛✊✊⬛✊✊⬛✊✊⬛ + ⬜⬛⬜⬜⬛✊✊⬛✊✊⬛✊✊⬛✊✊⬛ + """, + """ + ⬜⬜⬜⬜⬜⬜⬜⬜⬛⬛⬜⬜⬜⬜⬜⬜⬜ + ⬜⬜⬜⬜⬜⬜⬜⬜⬛⬛⬜⬜⬜⬜⬜⬜⬜ + ⬜⬜⬜⬜⬜⬜⬜⬛✊✊⬛⬜⬜⬜⬜⬜⬜ + ⬜⬜⬜⬜⬜⬜⬜⬛✊✊⬛⬜⬜⬜⬜⬜⬜ + ⬜⬜⬜⬜⬜⬜⬜⬛✊✊⬛⬜⬜⬜⬜⬜⬜ + ⬜⬜⬜⬜⬜⬜⬜⬛✊✊⬛⬜⬜⬜⬜⬜⬜ + ⬜⬜⬜⬜⬜⬜⬜⬛✊✊⬛⬜⬜⬜⬜⬜⬜ + ⬜⬜⬜⬜⬜⬛⬛⬛✊✊⬛⬛⬛⬜⬜⬜⬜ + ⬜⬜⬜⬜⬛✊✊⬛✊✊⬛✊✊⬛⬛⬛⬜ + ⬜⬜⬜⬜⬛✊✊⬛✊✊⬛✊✊⬛✊✊⬛ + ⬜⬛⬜⬜⬛✊✊⬛✊✊⬛✊✊⬛✊✊⬛ + ⬛✊⬛⬜⬛✊✊✊✊✊✊✊✊✊✊✊⬛ + ⬛✊✊⬛⬛✊✊✊✊✊✊✊✊✊✊✊⬛ + ⬜⬛✊✊✊✊✊✊✊✊✊✊✊✊✊✊⬛ + ⬜⬜⬛✊✊✊✊✊✊✊✊✊✊✊✊✊⬛ + ⬜⬜⬜⬛✊✊✊✊✊✊✊✊✊✊✊✊⬛ + """, + """ + ⬜⬜⬜⬜⬜⬜⬜⬜⬛⬛⬜⬜⬜⬜⬜⬜⬜ + ⬜⬜⬜⬜⬜⬜⬜⬜⬛⬛⬜⬜⬜⬜⬜⬜⬜ + ⬜⬜⬜⬜⬜⬜⬜⬛✊✊⬛⬜⬜⬜⬜⬜⬜ + ⬜⬜⬜⬜⬜⬜⬜⬛✊✊⬛⬜⬜⬜⬜⬜⬜ + ⬜⬜⬜⬜⬜⬜⬜⬛✊✊⬛⬜⬜⬜⬜⬜⬜ + ⬜⬜⬜⬜⬜⬜⬜⬛✊✊⬛⬜⬜⬜⬜⬜⬜ + ⬜⬜⬜⬜⬜⬜⬜⬛✊✊⬛⬜⬜⬜⬜⬜⬜ + ⬜⬜⬜⬜⬜⬛⬛⬛✊✊⬛⬛⬛⬜⬜⬜⬜ + ⬜⬜⬜⬜⬛✊✊⬛✊✊⬛✊✊⬛⬛⬛⬜ + ⬜⬜⬜⬜⬛✊✊⬛✊✊⬛✊✊⬛✊✊⬛ + ⬜⬛⬜⬜⬛✊✊⬛✊✊⬛✊✊⬛✊✊⬛ + ⬛✊⬛⬜⬛✊✊✊✊✊✊✊✊✊✊✊⬛ + ⬛✊✊⬛⬛✊✊✊✊✊✊✊✊✊✊✊⬛ + ⬜⬛✊✊✊✊✊✊✊✊✊✊✊✊✊✊⬛ + ⬜⬜⬛✊✊✊✊✊✊✊✊✊✊✊✊✊⬛ + ⬜⬜⬜⬛✊✊✊✊✊✊✊✊✊✊✊✊⬛ + ⬜⬜⬜⬜⬛✊✊✊✊✊✊✊✊✊✊✊⬛ + ⬜⬜⬜⬜⬛✊✊✊✊✊✊✊✊✊✊✊⬛ + ⬜⬜⬜⬜⬜⬛✊✊✊✊✊✊✊✊✊⬛⬜ + ⬜⬜⬜⬜⬜⬜⬛⬛⬛⬛⬛⬛⬛⬛⬛⬜⬜ + """, + ) + + for new_text in loader: + await edit_message( + message, + new_text + ) + await asyncio.sleep(1) diff --git a/routes/info_bot.py b/routes/info_bot.py new file mode 100644 index 0000000..3d19968 --- /dev/null +++ b/routes/info_bot.py @@ -0,0 +1,11 @@ +from custom_rules.permission import Permission +from vkbottle.user import Message +from config import bl, edit_message + + +@bl.message(Permission(), text="хелло") +async def hello(message: Message): + await edit_message( + message, + "привет" + ) diff --git a/routes/trusted.py b/routes/trusted.py new file mode 100644 index 0000000..e69de29 diff --git a/user_ids.json b/user_ids.json new file mode 100644 index 0000000..96b0b40 --- /dev/null +++ b/user_ids.json @@ -0,0 +1 @@ +[368658177, 304398797] \ No newline at end of file