def func(self):
     try:
         f = codecs.open('DB\\languages.txt', 'r', 'utf-8')
         t = eval(f.read())
         f.close()
         if self.mode == '+':
             if str(self.text) in t:
                 u = str(UEngine.get_username_by_id(self.user))
                 if not u in t[str(self.text)]:
                     f = codecs.open('DB\\languages.txt', 'w', 'utf-8')
                     t[str(self.text)].append(u)
                     f.write(str(t))
                     f.close()
                     self.result[
                         'message'] = f'Теперь {u} знает {str(self.text)}'
                 else:
                     self.result['message'] = 'Уже есть.'
             else:
                 self.result[
                     'message'] = f'Введите корректный ЯП: ' + ', '.join(
                         [i for i in t])
         elif self.mode == '-':
             if str(self.text) in t:
                 u = str(UEngine.get_username_by_id(self.user))
                 if u in t[str(self.text)]:
                     f = codecs.open('DB\\languages.txt', 'w', 'utf-8')
                     t[str(self.text)].remove(u)
                     f.write(str(t))
                     f.close()
                     self.result[
                         'message'] = f'Теперь {u} не знает {str(self.text)}'
                 else:
                     self.result['message'] = 'Ты не знаешь этот язык.'
         else:
             if str(self.text) in t:
                 self.result['message'] = ', '.join(t[str(self.text)])
             else:
                 s = [i for i in t]
                 self.result['message'] = '\n'.join([
                     (i + ': ' + ', '.join(t[i])) for i in s
                 ])
         return True
     except Exception as e:
         self.result['message'] = str(e)
         return False
Exemple #2
0
 def func(self):
     try:
         message = UEngine.get_message_by_id(self.message)
         if 'fwd_messages' in message['items'][0]:
             _str = UEngine.get_username_by_id(message['items'][0]['user_id']) + ' пожаловался на ' + \
                    UEngine.get_username_by_id(message['items'][0]['fwd_messages'][0]['user_id']) + ': "' + \
                    message['items'][0]['fwd_messages'][0]['body'] + '"'
             # Log.show_info(_str)
             f = open('DB\\report.txt', 'a')
             f.write(_str + '\n')
             f.close()
             self.result['message'] = f'Report for ' \
                                      f'{UEngine.get_link_by_id(message["items"][0]["fwd_messages"][0]["user_id"])}'\
                                      f' submitted, report id {message["items"][0]["id"] * 1177647263131337}.'
         else:
             self.result[
                 'message'] = 'Пожаловаться можно только на сообщение'
         return True
     except Exception as e:
         self.result['message'] = str(e)
         return False
Exemple #3
0
 def func(self):
     try:
         user_id = self.text
         if 'id' in user_id:
             user_id = user_id[2:len(user_id)]
         if not int(user_id) in db.black:
             if UEngine.user_exist_in_chat(user_id):
                 self.result['message'] = 'Этот пользователь уже в беседе'
             elif not UEngine.user_exist_in_friends(user_id):
                 self.result['message'] = 'Этот пользователь должен быть у меня в друзьях'
             else:
                 VK().Messages().add_chat_user(user_id=user_id)
                 self.result['message'] = UEngine.get_username_by_id(user_id=user_id) + ' приглашен.'
             Log.show_info(str(UEngine.get_username_by_id(UEngine.get_user_id_by_message(self.message))) +
                           'пытался пригласить ' + UEngine.get_username_by_id(user_id))
         else:
             self.result['message'] = 'Этот пользователь находится в чс.'
         return True
     except Exception as e:
         self.result['message'] = str(e)
         return False
 def func(self):
     try:
         user_id = self.text
         if 'id' in str(user_id):
             user_id = user_id[2:len(user_id)]
         else:
             user_id = UEngine.get_user_id(user_id)
         if int(user_id) in db.privilege:
             self.result['message'] = 'Нельзя кикнуть привилегированного.'
         elif UEngine.user_exist_in_chat(user_id):
             VK().Messages().remove_chat_user(user_id=user_id)
             self.result['message'] = UEngine.get_username_by_id(
                 user_id) + ' кикнут.'
         else:
             self.result['message'] = 'Такого пользователя нет в беседе.'
         Log.show_info(
             str(
                 UEngine.get_username_by_id(
                     UEngine.get_user_id_by_message(self.message))) +
             'пытался кикнуть ' + UEngine.get_username_by_id(user_id))
         return True
     except Exception as e:
         self.result['message'] = str(e)
         return False
Exemple #5
0
 def func(self):
     try:
         followers = VK().Users().get_followers()['items']
         users = f'[{len(followers)}] Принятые заявки:\n'
         if len(followers):
             i = 0
             for user in followers:
                 VK().Friends().add(user_id=user)
                 users += str(i + 1) + '. ' + UEngine.get_username_by_id(
                     user) + '\n'
                 i += 1
             self.result['message'] = users
         else:
             self.result['message'] = 'Подписчиков не обнаруженно.'
         return True
     except Exception as e:
         self.result['message'] = str(e)
         return False
Exemple #6
0
 def func(self):
     try:
         users = VK().Messages().get_chat()['users']
         _str = 'Пользователи, найденые в чс:\n'
         index = 0
         for _user in users:
             if int(_user) in db.black:
                 index += 1
                 _str += str(index) + '. ' + UEngine.get_username_by_id(
                     _user) + '\n'
                 VK().Messages().remove_chat_user(user_id=_user)
         if index > 0:
             self.result['message'] = _str
         else:
             self.result[
                 'message'] = 'Пользователей из черного списка не найдено.'
         return True
     except Exception as e:
         self.result['message'] = str(e)
         return False
Exemple #7
0
 def func(self):
     try:
         f = codecs.open('DB\\note.txt', 'r', 'utf-8')
         t = eval(f.read())
         f.close()
         if len(str(self.text)) > 0:
             if self.mode == '+':
                 t.append({
                     str(UEngine.get_username_by_id(self.user)):
                     str(self.text)
                 })
                 f = codecs.open('DB\\note.txt', 'w', 'utf-8')
                 var.opened_bd = True
                 f.write(str(t))
                 f.close()
                 self.result['message'] = 'Записка добавлена.'
         else:
             self.result['message'] = '\n'.join([[(j + ': ' + i[j])
                                                  for j in i][0]
                                                 for i in t])
         return True
     except Exception as e:
         self.result['message'] = str(e)
         return False
Exemple #8
0
    def start():
        try:
            Log.show_info(f'Бот запущен.')
            if not var.main_start:
                VK().Messages().send(message=f'{var.name}: Успешный запуск.')
                var.globalID = VK().Messages().get_history(
                    count=1)['items'][0]['id']
                var.main_start = True
            all_users = VK().Messages().get_chat()['users']
            main_users = VK().Messages().get_chat(
                chat_id=var.chatCheck)['users']
            for au in all_users:
                if au not in main_users:
                    VK().Messages().send(
                        message=
                        'Сорен, тут можно находится только тем, кто есть в основной беседе.'
                    )
                    VK().Messages().remove_chat_user(user_id=au)
            while True:
                chat_title = VK().Messages().get_chat()['title']
                if chat_title != var.title:
                    VK().Messages().edit_chat(title=var.title)
                response = VK().Messages().get_history(
                    count=10,
                    offset=-10,
                    start_message_id=var.globalID,
                    fields='first_name, last_name')
                if var.bot_online:
                    VK().Account().set_online()
                else:
                    VK().Account().set_offline()
                if not response is False:
                    response = response['items'][::-1]
                    if len(response):
                        for item in response:
                            if int(
                                    item['id']
                            ) > var.globalID and item['from_id'] != var.mainID:
                                var.globalID = int(item['id'])
                                s = ''
                                p = None
                                if 'body' in item:
                                    if len(item['body']) > 0:
                                        s += str.encode(
                                            item['body']).decode('utf-8')
                                    else:
                                        s += '(None)'
                                log = s
                                u = item['from_id']
                                if 'attachments' in item:
                                    log += ' ('
                                    for a in item['attachments']:
                                        tp = a['type']
                                        a = a[str(tp)]
                                        if tp == 'doc':
                                            log += f'doc: {a["title"]} (doc{a["owner_id"]}_{a["id"]}'
                                            if 'access_key' in a:
                                                log += '_' + a["access_key"]
                                            log += ')'
                                        if tp == 'photo':
                                            p = a['photo_604']
                                            log += f'photo: photo{a["owner_id"]}_{a["id"]}'
                                            if 'access_key' in a:
                                                log += '_' + a["access_key"]
                                        if tp == 'audio':
                                            log += f'audio: {a["artist"]} - ' \
                                                   f'{a["title"]} (audio{a["owner_id"]}_{a["id"]}'
                                            if 'access_key' in a:
                                                log += '_' + a["access_key"]
                                            log += ')'
                                        if tp == 'video':
                                            log += f'video: {a["title"]} (video{a["owner_id"]}_{a["id"]}'
                                            if 'access_key' in a:
                                                log += '_' + a["access_key"]
                                            log += ')'
                                        if tp == 'link':
                                            log += f'link: {a["title"]} ({a["url"]})'
                                        if tp == 'sticker':
                                            log += f'sticker: product_{a["product_id"]} id_{a["sticker_id"]}'
                                        log += ', '
                                    log = log[:len(log) - 2]
                                    log += ')'
                                if 'geo' in item:
                                    log += f' (geo: {item["geo"]["coordinates"]})'
                                    if 'place' in item['geo']:
                                        log += f' ({item["geo"]["place"]["country"]}, {item["geo"]["place"]["city"]})'
                                if 'fwd_messages' in item:
                                    log += f' (forward: '
                                    for mes in item['fwd_messages']:
                                        log += f'{UEngine.get_username_by_id(mes["user_id"])} ({mes["body"]}), '
                                    log = log[:len(log) - 2]
                                    log += ')'
                                Log.show_vk(
                                    UEngine.get_username_by_id(u) + ': ' + log)
                                f = open('DB\\money.txt', 'r')
                                money = eval(f.read())
                                if not str(item['user_id']) in money:
                                    money[str(item['user_id'])] = 0
                                money[str(item['user_id'])] += 1
                                f.close()
                                f = open('DB\\money.txt', 'w')
                                f.write(str(money))
                                f.close()
                                if 'action' in item:
                                    main_users = VK().Messages().get_chat(
                                        chat_id=var.chatCheck)['users']
                                    if item['action'] == 'chat_title_update':
                                        VK().Messages().edit_chat(
                                            title=var.title)
                                    if item['action'] == 'chat_photo_update':
                                        VK().Messages().set_chat_photo(
                                            file=var.photo)
                                    if item['action'] == 'chat_invite_user_by_link':
                                        if not int(
                                                item['user_id']
                                        ) in db.black and item[
                                                'user_id'] in main_users:
                                            VK().Messages().send(
                                                message='Добро пожаловать, ' +
                                                UEngine.get_link_by_id(
                                                    item['user_id']) + '.')
                                        else:
                                            VK().Messages().send(
                                                message=
                                                'Сорен, ты в ЧС или тебя нет в основной беседе.'
                                            )
                                            VK().Messages().remove_chat_user(
                                                user_id=item['action_mid'])
                                    if item['action'] == 'chat_invite_user' or item[
                                            'action'] == 'chat_kick_user':
                                        if not int(item['from_id']
                                                   ) in db.privilege:
                                            VK().Messages().remove_chat_user(
                                                user_id=item['from_id'])
                                            if int(item['from_id']) != int(
                                                    item['action_mid']):
                                                VK().Messages(
                                                ).remove_chat_user(
                                                    user_id=item['action_mid'])
                                        response = VK().Messages().get_chat(
                                        )['users']
                                        for user in response:
                                            if int(
                                                    user
                                            ) in db.black or not user in main_users:
                                                VK().Messages(
                                                ).remove_chat_user(
                                                    user_id=user)
                                    if item['action'] == 'chat_pin_message':
                                        if not int(item['action_mid']
                                                   ) in db.admins:
                                            VK().Messages().remove_chat_user(
                                                user_id=item['action_mid'])
                                            VK().Messages().unpin()
                                            VK().Messages().pin(
                                                message_id=var.
                                                pin_id['message_id'])
                                        else:
                                            var.pin_id['message_id'] = item[
                                                'id']
                                            f = open('DB\\pin.txt', 'w')
                                            f.write(str(var.pin_id))
                                            f.close()
                                    if item['action'] == 'chat_unpin_message':
                                        if not int(item['action_mid']
                                                   ) in db.admins:
                                            VK().Messages().remove_chat_user(
                                                user_id=item['action_mid'])
                                        VK().Messages().pin(
                                            message_id=var.pin_id['message_id']
                                        )
                                elif len(s) > 2:
                                    if (var.debug_mode and int(u) == var.czarID
                                        ) or not var.debug_mode:
                                        c = s[0]
                                        if c in var.prefixes:
                                            s = s[1:len(s)]
                                            md = 'a' if int(
                                                u) in db.admins else (
                                                    'm' if int(u) in db.moders
                                                    else 'u')

                                            def start_thread():
                                                Engine().cmd(
                                                    s, p, u, md, item['id'])

                                            Thread(target=start_thread).start()
                                    else:
                                        if s[0] in var.prefixes:
                                            VK().Messages().send(
                                                'Бот в режиме дебага.')
        except Exception as e:
            Log.show_error(e)