Untitled

mail@pastecode.io avatar
unknown
plain_text
a year ago
4.2 kB
4
Indexable
Never
from vkbottle.user import User, Message
import re, asyncio
from vkbottle import VKAPIError
import mysql.connector
import random
from random import randint
#from roles_vk import Permission
from loguru import logger
from config import settings
import requests
import os
import json
logger.remove()

user = User(token='')

def get_user_id(user_link):
    try:
        if user_link.startswith('@'):
            resolved_user = user.users.get(user_ids=user_link[1:])[0]
            return resolved_user['id']
        else:
            match = re.match(r'^https?://vk\.com/([a-zA-Z0-9_\.]+)$', user_link)
            if match:
                screen_name = match.group(1)
                resolved_user = user.users.get(user_ids=screen_name)[0]
                return resolved_user['id']
            elif user_link.isdigit():
                return int(user_link)
            else:
                return None
    except Exception as e:
        print("Ошибка при получении id пользователя:", e)
        return None

def invite_user_to_chat_g(user_id, chat_id):
    try:
        if chat_id == 2 or chat_id == 3: 
            user.messages.addChatUser(
                chat_id=chat_id,
                user_id=user_id,
            )
            return True
        else:
            return False
    except Exception as e:
        print("Ошибка при добавлении пользователя в беседу:", e)
        return False
    
def invite_user_to_chat_m(user_id, chat_id):
    try:
        if chat_id == 4 or chat_id == 3: 
            user.messages.addChatUser(
                chat_id=chat_id,
                user_id=user_id,
            )
            return True
        else:
            return False
    except Exception as e:
        print("Ошибка при добавлении пользователя в беседу:", e)
        return False

@user.on.chat_message(text=".invite <argument> <user_link>")
async def invite_user_to_chats(message: Message, argument: str, user_link: str):
    chat_id = message.peer_id
    uid = message.from_id
    mydb = mysql.connector.connect(
        host=settings['host'],
        user=settings["user"],
        password=settings["password"],
        database=settings["database"]
    )
    curs = mydb.cursor()
    curs = mydb.cursor(buffered=True)
    print('3')
    command_args = message.text.split(' ')
    print('2')
    if len(command_args) == 3:
        print('1')
        user_id = get_user_id(user_link)
        curs.execute(f'SELECT dostup FROM perms WHERE vk = {uid} AND dostup = "2" OR vk = {uid} AND dostup = "3" OR vk = {uid} AND dostup = "1"')
        myres = curs.fetchone()
        
        if myres is None:
            await message.answer('У Вас нет прав!')
        else:
            if user_id is not None:
                if argument == 'G':
                    if invite_user_to_chat_g(user_id, 2) and invite_user_to_chat_g(user_id, 3):
                        await message.answer('Пользователь успешно добавлен в беседу Курилку и Забивов Гетто!')
                    else:
                        await message.answer('Ошибка при добавлении пользователя в беседу!')
                elif argument == 'M':
                    if invite_user_to_chat_m(user_id, 3) and invite_user_to_chat_m(user_id, 4):
                        await message.answer('Пользователь успешно добавлен в беседу Курилку и Забивов Мафий!')
                    else:
                        await message.answer('Ошибка при добавлении пользователя в беседу!')
                else:
                    await message.answer('Некорректный аргумент! Допустимые значения: G, M')
    else:
        await message.answer('Пожалуйста, укажите аргумент (G или M) и ссылку или id пользователя после команды !invite!')


if __name__ == "__main__":
  user.run_forever()