47 lines
1.4 KiB
Python
47 lines
1.4 KiB
Python
from vkbottle.bot import Message
|
|
from vkbottle.framework.labeler import BotLabeler
|
|
|
|
from messages import *
|
|
import vk.vk_database as database
|
|
|
|
labeler = BotLabeler()
|
|
|
|
|
|
@labeler.chat_message(action=['chat_invite_user', 'chat_invite_user_by_link'])
|
|
async def user_join_handler(message: Message):
|
|
chat_id = message.peer_id
|
|
chat = database.DB.create_chat_if_not_exists(chat_id)
|
|
if chat['active'] == 0:
|
|
return
|
|
|
|
if message.action.type == 'chat_invite_user_by_link':
|
|
user_id = message.from_id
|
|
first_join = True
|
|
else:
|
|
user_id = message.action.member_id
|
|
first_join = (user_id != message.from_id)
|
|
|
|
if user_id < 0:
|
|
return
|
|
|
|
user_info = (await message.ctx_api.users.get(user_ids=[user_id]))[0]
|
|
|
|
if first_join:
|
|
response = chat['greeting_join'] or MESSAGE_DEFAULT_GREETING_JOIN
|
|
else:
|
|
response = chat['greeting_rejoin'] or MESSAGE_DEFAULT_GREETING_REJOIN
|
|
|
|
response = response.format(name=f'@id{user_id} ({user_info.first_name})')
|
|
await message.answer(response)
|
|
|
|
|
|
@labeler.chat_message(action=['chat_kick_user'])
|
|
async def user_leave_handler(message: Message):
|
|
chat_id = message.peer_id
|
|
chat = database.DB.create_chat_if_not_exists(chat_id)
|
|
if chat['active'] == 0:
|
|
return
|
|
|
|
user_id = message.action.member_id
|
|
if user_id != message.from_id:
|
|
database.DB.delete_user(chat_id, user_id)
|