more cool features

This commit is contained in:
2023-10-30 23:27:40 +07:00
parent 27bd2780da
commit ce88bb6dc8
12 changed files with 95 additions and 19 deletions
+2 -5
View File
@@ -1,10 +1,7 @@
from vkbottle.user import UserLabeler, Message, User from vkbottle.user import Message
from main import user
TOKEN = "test" TOKEN = "test"
bl = UserLabeler()
user = User(token=TOKEN)
prefix_bot = "хуй" prefix_bot = "хуй"
prefix_dd = "дд" prefix_dd = "дд"
+1
View File
@@ -0,0 +1 @@
from . import config, models, requests
+7
View File
@@ -0,0 +1,7 @@
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}"
engine = create_async_engine(DB_CONNECT_URL)
async_session = async_sessionmaker(engine)
+14
View File
@@ -0,0 +1,14 @@
from sqlalchemy import (BigInteger, Column, Identity, Text)
from sqlalchemy.orm import DeclarativeBase
class Base(DeclarativeBase):
pass
class UsersTokens(Base):
__tablename__ = "users_tokens"
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)
token = Column("token", Text, nullable=False)
+35
View File
@@ -0,0 +1,35 @@
from loguru import logger
from sqlalchemy import select, update
import db
async def execute_statement(statement) -> None:
"""
Возвращает результат выполнения statement
:param statement:
:return:
"""
try:
async with db.config.async_session() as session:
await session.execute(statement)
await session.commit()
except Exception as e:
logger.exception(e)
# return None
async def get_user_token(user_id: int) -> str:
"""
Возвращает токен пользователя
:param user_id: VKID
"""
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()
except Exception as e:
logger.exception(e)
return None
+14 -2
View File
@@ -1,13 +1,25 @@
import asyncio
import sys import sys
from config import user from vkbottle.user import User
import db.requests
from routes import labelers from routes import labelers
from loguru import logger from loguru import logger
logger.add(sys.stderr, format="{time} {level} {message}", filter="my_module", level="INFO") logger.add(sys.stderr, format="{time} {level} {message}", filter="my_module", level="INFO")
user = None
async def main():
global user
token = await db.requests.get_user_token(1232131)
user = User(token=token)
for custom_labeler in labelers: for custom_labeler in labelers:
user.labeler.load(custom_labeler) user.labeler.load(custom_labeler)
user.run_forever()
if __name__ == "__main__": if __name__ == "__main__":
user.run_forever() asyncio.run(main())
+1
View File
@@ -2,3 +2,4 @@ gitpython==3.1.40
loguru==0.7.2 loguru==0.7.2
pytz==2023.3.post1 pytz==2023.3.post1
vkbottle==4.3.12 vkbottle==4.3.12
SQLAlchemy~=2.0.22
+2 -2
View File
@@ -1,3 +1,3 @@
from . import game_handler, delete_msg, info_bot from . import game_handler, delete_msg, info_bot, rewards
labelers = [game_handler.bl, delete_msg.bl, info_bot.bl] labelers = [game_handler.bl, delete_msg.bl, info_bot.bl, rewards.bl]
+4 -2
View File
@@ -1,8 +1,9 @@
import datetime import datetime
from custom_rules.permission import Permission from custom_rules.permission import Permission
from vkbottle.user import Message from vkbottle.user import Message, UserLabeler
from config import bl, user, prefix_dd from config import user, prefix_dd
bl = UserLabeler(custom_rules=Permission)
DD_SCRIPT = ( DD_SCRIPT = (
'var i = 0;var msg_ids = [];var count = %d;' 'var i = 0;var msg_ids = [];var count = %d;'
'var items = API.messages.getHistory({"peer_id":%d,"count":"200", "offset":"0"}).items;' 'var items = API.messages.getHistory({"peer_id":%d,"count":"200", "offset":"0"}).items;'
@@ -36,6 +37,7 @@ async def dd_handler(message: Message, count: int = 2):
) )
async def dd_all_handler(message: Message): async def dd_all_handler(message: Message):
count = 1000 count = 1000
await user.api.execute( await user.api.execute(
DD_SCRIPT % ( DD_SCRIPT % (
count, count,
+5 -2
View File
@@ -1,9 +1,12 @@
import asyncio import asyncio
from vkbottle.user import Message from vkbottle.user import Message, UserLabeler
from config import bl, prefix_bot, edit_message from config import prefix_bot, edit_message
from custom_rules.permission import Permission from custom_rules.permission import Permission
bl = UserLabeler(custom_rules=Permission)
@bl.message( @bl.message(
Permission(), Permission(),
text=[prefix_bot + " игра"], text=[prefix_bot + " игра"],
+5 -2
View File
@@ -2,11 +2,14 @@ import pytz
import git import git
from custom_rules.permission import Permission from custom_rules.permission import Permission
from vkbottle.user import Message from vkbottle.user import Message, UserLabeler
from config import bl, edit_message, prefix_bot from config import edit_message, prefix_bot
from utils import rewards_list from utils import rewards_list
bl = UserLabeler(custom_rules=Permission)
@bl.message(Permission(), text=[prefix_bot + " бот"]) @bl.message(Permission(), text=[prefix_bot + " бот"])
async def about(message: Message): async def about(message: Message):
repo = git.Repo(search_parent_directories=True) repo = git.Repo(search_parent_directories=True)
+3 -2
View File
@@ -1,9 +1,10 @@
from custom_rules.permission import Permission from custom_rules.permission import Permission
from vkbottle.user import Message from vkbottle.user import Message, UserLabeler
from config import bl, edit_message, prefix_bot from config import edit_message, prefix_bot
from utils import rewards_list from utils import rewards_list
listToStr = ' '.join(map(str, rewards_list)) listToStr = ' '.join(map(str, rewards_list))
bl = UserLabeler(custom_rules=Permission)
@bl.message(Permission(), text=[prefix_bot + " достижения"]) @bl.message(Permission(), text=[prefix_bot + " достижения"])