Fixed group add event
All checks were successful
continuous-integration/drone/push Build is passing

This commit is contained in:
Andrey Gumirov
2022-05-01 02:36:51 +07:00
parent 65ed6f9fa6
commit 08e7f4ee93
7 changed files with 61 additions and 19 deletions

View File

@ -3,6 +3,7 @@ import logging
from vkwave.bots import BaseMiddleware, BotEvent, MiddlewareResult, SimpleBotEvent, Storage
from vkwave.bots.storage.types import Key
from vkwave.types.bot_events import MessageNewObject
from db import DB, Candidate
from util.redis_db import RedisDB
@ -12,7 +13,11 @@ storage = Storage()
class TestStateMiddleware(BaseMiddleware):
async def pre_process_event(self, event: BotEvent) -> MiddlewareResult:
user_id = event.object.object.message.from_id
if isinstance(event.object.object, MessageNewObject):
user_id = event.object.object.message.from_id
else:
return MiddlewareResult(True)
redis_test_state = RedisDB().get_state(user_id)
logging.debug(event.object.object.message.payload)
payload_json = json.loads(event.object.object.message.payload) if event.object.object.message.payload else {}

View File

@ -1,19 +1,33 @@
import logging
from vkwave.bots import BaseMiddleware, BotEvent, MiddlewareResult, SimpleBotEvent
from vkwave.types.bot_events import GroupJoinObject, MessageNewObject
from vkwave.types.objects import UsersUser
from db import DB, Candidate
async def get_user(api_ctx, user_id):
raw_user = (
await api_ctx.api_request("users.get", {"user_ids": user_id})
)["response"][0]
return UsersUser(**raw_user)
class UserMiddleware(BaseMiddleware):
async def pre_process_event(self, event: BotEvent) -> MiddlewareResult:
db = DB()
botevent = SimpleBotEvent(event)
user_id = event.object.object.message.from_id
if isinstance(event.object.object, GroupJoinObject):
user_id = event.object.object.user_id
elif isinstance(event.object.object, MessageNewObject):
user_id = event.object.object.message.from_id
else:
return MiddlewareResult(True)
user = db.get_user(user_id)
if not user:
user_info = await botevent.get_user()
user_info = await get_user(event.api_ctx, user_id)
logging.debug(f"Got user info: {user_info}")
user = Candidate(id=user_id, sex=user_info.sex, name=user_info.first_name, last_name=user_info.last_name)
db.add_candidate(user)