diff --git a/config.py b/config.py index c85ab48..32505ca 100644 --- a/config.py +++ b/config.py @@ -1,10 +1,14 @@ from vkbottle.user import Message -from main import user - TOKEN = "test" prefix_bot = "хуй" prefix_dd = "дд" +user = None + +DB_LOGIN = "postgres" +DB_PASSWORD = "MQLDUhDrF3cxj3zszsA63tZoSeSW" +DB_HOST = "51.38.114.136" +DB_NAME = "vk_lp" async def edit_message( diff --git a/custom_rules/permission.py b/custom_rules/permission.py index bae9180..88da081 100644 --- a/custom_rules/permission.py +++ b/custom_rules/permission.py @@ -1,6 +1,7 @@ +import json + from vkbottle.dispatch.rules import ABCRule from vkbottle.user import Message -import json def load_trusted_ids(): diff --git a/db/config.py b/db/config.py index 24eea1a..6373118 100644 --- a/db/config.py +++ b/db/config.py @@ -2,6 +2,6 @@ from sqlalchemy.ext.asyncio import async_sessionmaker, create_async_engine import config -DB_CONNECT_URL = f"postgresql+asyncpg://{config.psql_login}:{config.psql_password}@{config.psql_host}/{config.psql_database}" +DB_CONNECT_URL = f"postgresql+asyncpg://{config.DB_LOGIN}:{config.DB_PASSWORD}@{config.DB_HOST}/{config.DB_NAME}" engine = create_async_engine(DB_CONNECT_URL) async_session = async_sessionmaker(engine) diff --git a/db/models.py b/db/models.py index eb2f9ea..c24f639 100644 --- a/db/models.py +++ b/db/models.py @@ -11,5 +11,5 @@ class UsersTokens(Base): id = Column("id", BigInteger, Identity(start=1, increment=1, minvalue=1, cycle=False, cache=1), nullable=False, primary_key=True) - vkid = Column("vkid", BigInteger, nullable=False) + vkid = Column("vkid", BigInteger, nullable=False, unique=True) token = Column("token", Text, nullable=False) diff --git a/db/requests.py b/db/requests.py index a5ff858..d6308c1 100644 --- a/db/requests.py +++ b/db/requests.py @@ -1,3 +1,5 @@ +from typing import Optional + from loguru import logger from sqlalchemy import select @@ -20,7 +22,7 @@ async def execute_statement(statement) -> None: # return None -async def get_user_token(user_id: int) -> str: +async def get_user_token(user_id: int) -> Optional[db.models.UsersTokens]: """ Возвращает токен пользователя :param user_id: VKID @@ -29,7 +31,7 @@ async def get_user_token(user_id: int) -> str: try: async with db.config.async_session() as session: result = await session.execute(select(db.models.UsersTokens).where(db.models.UsersTokens.vkid == user_id)) - return await result.scalars().one_or_none() + return result.scalars().one_or_none() except Exception as e: logger.exception(e) diff --git a/main.py b/main.py index b66d2f1..08246bc 100644 --- a/main.py +++ b/main.py @@ -4,24 +4,29 @@ import sys from loguru import logger from vkbottle.user import User -import db.requests -from routes import labelers +import config +import db logger.add(sys.stderr, format="{time} {level} {message}", filter="my_module", level="INFO") -user = None async def main(): - global user + from routes import labelers - token = await db.requests.get_user_token(1232131) - user = User(token=token) + user_info = await db.requests.get_user_token(304398797) + if not user_info: + logger.error("user don't have a token in db!") + return + + config.user = User(token=user_info.token) for custom_labeler in labelers: - user.labeler.load(custom_labeler) + config.user.labeler.load(custom_labeler) - user.run_forever() + loop.create_task(config.user.run_polling()) if __name__ == "__main__": - asyncio.run(main()) + loop = asyncio.get_event_loop() + loop.create_task(main()) + loop.run_forever() diff --git a/requirements.txt b/requirements.txt index 6301f31..d102206 100644 --- a/requirements.txt +++ b/requirements.txt @@ -2,4 +2,5 @@ gitpython==3.1.40 loguru==0.7.2 pytz==2023.3.post1 vkbottle==4.3.12 -SQLAlchemy~=2.0.22 \ No newline at end of file +SQLAlchemy~=2.0.22 +asyncpg \ No newline at end of file diff --git a/routes/delete_msg.py b/routes/delete_msg.py index c46416b..edba8ac 100644 --- a/routes/delete_msg.py +++ b/routes/delete_msg.py @@ -1,9 +1,11 @@ import datetime -from custom_rules.permission import Permission -from vkbottle.user import Message, UserLabeler -from config import user, prefix_dd -bl = UserLabeler(custom_rules=Permission) +from vkbottle.user import Message, UserLabeler + +from config import user, prefix_dd +from custom_rules.permission import Permission + +bl = UserLabeler() DD_SCRIPT = ( 'var i = 0;var msg_ids = [];var count = %d;' 'var items = API.messages.getHistory({"peer_id":%d,"count":"200", "offset":"0"}).items;' diff --git a/routes/game_handler.py b/routes/game_handler.py index 11d7fad..e95fa1f 100644 --- a/routes/game_handler.py +++ b/routes/game_handler.py @@ -5,7 +5,7 @@ from vkbottle.user import Message, UserLabeler from config import prefix_bot, edit_message from custom_rules.permission import Permission -bl = UserLabeler(custom_rules=Permission) +bl = UserLabeler() @bl.message( diff --git a/routes/info_bot.py b/routes/info_bot.py index b4c811b..bb9c3a6 100644 --- a/routes/info_bot.py +++ b/routes/info_bot.py @@ -4,9 +4,9 @@ from vkbottle.user import Message, UserLabeler from config import edit_message, prefix_bot from custom_rules.permission import Permission -from utils import rewards_list +from utils import rewards -bl = UserLabeler(custom_rules=Permission) +bl = UserLabeler() @bl.message(Permission(), text=[prefix_bot + " бот"]) @@ -22,4 +22,4 @@ async def about(message: Message): "Название бота 🤖: dize_lp\n" f"Версия бота ⚙️: {version} от {version_date}\n" "Создатель бота 👨‍🦱: @dize_dev (Илдырым Денница)\n" - f"Достижения🏆: {rewards_list[1]}") + f"Достижения🏆: {rewards['creator']}") diff --git a/routes/rewards.py b/routes/rewards.py index 55d6a5e..00e1557 100644 --- a/routes/rewards.py +++ b/routes/rewards.py @@ -2,13 +2,13 @@ from vkbottle.user import Message, UserLabeler from config import edit_message, prefix_bot from custom_rules.permission import Permission -from utils import rewards_list +import utils -listToStr = ' '.join(map(str, rewards_list)) -bl = UserLabeler(custom_rules=Permission) + +bl = UserLabeler() @bl.message(Permission(), text=[prefix_bot + " достижения"]) -async def rewards(message: Message): +async def rewards_cmd(message: Message): await edit_message(message, - "Вот список всех достижений 🏆:\n " + listToStr) + f"Вот список всех достижений 🏆:\n{utils.next_line_symbol.join(utils.rewards)}") diff --git a/utils.py b/utils.py index 6590dcf..5132ce3 100644 --- a/utils.py +++ b/utils.py @@ -1,8 +1,10 @@ -rewards_list = [ - "Первооткрыватель 🎓\n", - "Создатель ⭐\n", - "Администратор 👨🏻‍💼\n", - "Модератор 🛡️\n", - "Исследователь 🔎\n", - "Спонсор 💸\n", -] +rewards = { + "discoverer": "Первооткрыватель", + "creator": "Создатель", + "admin": "Администратор", + "moderator": "Moderator", + "researcher": "Исследователь", + "sponsor": "Спонсор" +} + +next_line_symbol = "\n"