Esempio n. 1
0
def tr_user_op(event, error, typ):
    tr_id = find_mention_by_event(event)

    if not tr_id:
        event.msg_op(2, event.responses['trusted_err_no_reply'])
        return "ok"

    def tr_err():
        event.msg_op(2, event.responses[f'trusted_err_{error}'])
        return "ok"

    tr_id = event.reply_message['from_id'] if event.reply_message else tr_id
    if typ == 'add':
        if tr_id in event.db.trusted_users: return tr_err()
    else:
        if tr_id not in event.db.trusted_users: return tr_err()

    tr_user = event.api('users.get', user_ids=tr_id)[0]

    if typ == 'add':
        event.db.trusted_users.append(tr_id)
        event.db.save()
    else:
        event.db.trusted_users.remove(tr_id)
        event.db.save()

    event.msg_op(
        2, event.responses[f'trusted_success_{typ}'].format(
            ссылка=ment_user(tr_user)))
    return "ok"
Esempio n. 2
0
def send_private(event: MySignalEvent) -> str:
    def abort(text):
        event.msg_op(2, text)
        return "ok"

    if event.command == 'в':
        if event.args[0] != 'лс':
            return "ok"
    uid = find_mention_by_event(event)
    if uid:
        if not (event.payload or event.attachments):
            if event.args and event.reply_message:
                if event.args[0] == 'лс' and len(event.args == 1):
                    abort('❗ Нет данных')
                else:
                    event.payload = ' '.join(event.args)
            else:
                abort('❗ Нет данных')
        try:
            event.api.msg_op(1,
                             uid,
                             event.payload,
                             attachment=','.join(event.attachments))
            msg = '✅ Сообщение отправлено'
        except VkApiResponseException as e:
            if e.error_code == 902:
                msg = '❗ Пользователь ограничил круг лиц, которые могут отправлять ему сообщения'
            else:
                msg = f'❗ Ошибка VK №{e.error_code}: {e.error_msg}'
        event.msg_op(2, msg)
    else:
        event.msg_op(2, '❗ Необходимо упоминание или ответ на сообщение')
    return "ok"
Esempio n. 3
0
def ban_user(event: MySignalEvent) -> str:
    user_id = find_mention_by_event(event)
    if user_id:
        if event.command == '+чс':
            try:
                if event.api('account.ban', owner_id=user_id) == 1:
                    msg = '😡 Забанено'
            except VkApiResponseException as e:
                if e.error_msg.endswith('already blacklisted'):
                    msg = '❗ Пользователь уже забанен'
                else:
                    msg = f'❗ Ошиб_очка: {e.error_msg}'
        else:
            try:
                if event.api('account.unban', owner_id=user_id) == 1:
                    msg = '💚 Разбанено'
            except VkApiResponseException as e:
                if e.error_msg.endswith('not blacklisted'):
                    msg = '👌🏻 Пользователь не забанен'
                else:
                    msg = f'❗ Ошиб_очка: {e.error_msg}'
    else:
        msg = "❗ Необходимо пересланное сообщение или упоминание"
    event.msg_op(2, msg)
    return "ok"
Esempio n. 4
0
def remote_control(event: MySignalEvent) -> Union[str, dict]:
    if db_gen.dc_auth is False:
        event.msg_op(
            2, '❗ Для использования этой команды необходимо ' +
            'разрешить авторизацию в ЦОД по токену (на сайте)')
        return "ok"

    uid = find_mention_by_event(event)
    if uid is None:
        event.msg_op(2, '❗ Необходимо указать пользователя')
        return "ok"

    resp = requests.post(DC,
                         json={
                             'method': 'remote_control',
                             'remote_user': str(uid),
                             'user_id': str(event.db.duty_id),
                             'session': session,
                             'data': {
                                 'chat': event.chat.iris_id,
                                 'local_id':
                                 event.msg['conversation_message_id']
                             }
                         })
    if resp.status_code != 200:
        event.msg_op(1,
                     '❗ Проблемы с центром обработки данных\n' +
                     'Напиши [id332619272|этому челику], если он еще живой',
                     disable_mentions=1)
        return "ok"

    resp = resp.json()

    if 'error' in resp:
        code = resp['error']
        if code == 5:
            msg = f"❗ Ошибка VK #{resp['code']}: {resp['msg']}"
        else:
            msg = errors.get(code, '❗ Неизвестный код ошибки')
        event.msg_op(2, msg)
        return "ok"

    event.msg_op(3)
    return "ok"
Esempio n. 5
0
def change_friend_status(event: MySignalEvent) -> str:
    user_id = find_mention_by_event(event)
    if user_id:
        if event.command.startswith('-др'):
            try:
                status = event.api('friends.delete', user_id=user_id)
                if status.get('friend_deleted'):
                    msg = "💔 Пользователь удален из друзей"
                elif status.get('out_request_deleted'):
                    msg = "✅ Отменена исходящая заявка"
                elif status.get('in_request_deleted'):
                    msg = "✅ Отклонена входящая заявка"
                elif status.get('suggestion_deleted'):
                    msg = "✅ Отклонена рекомендация друга"
                else:
                    msg = "❗ Произошла ошибка"
            except VkApiResponseException as e:
                msg = f"❗ Произошла ошибка VK №{e.error_code} {e.error_msg}"
        else:
            try:
                status = event.api('friends.add', user_id=user_id)
                if status == 1: msg = "✅ Заявка отправлена"
                elif status == 2: msg = "✅ Пользователь добавлен"
                else: msg = "✅ Заявка отправлена повторно"
            except VkApiResponseException as e:
                if e.error_code == 174:
                    msg = "🤔 Ты себя добавить хочешь?"
                elif e.error_code == 175:
                    msg = "❗ Ты в ЧС данного пользователя"
                elif e.error_code == 176:
                    msg = "❗ Пользователь в ЧС"
                else:
                    msg = f"❗ Ошибка: {e.error_msg}"
    else:
        msg = "❗ Необходимо пересланное сообщение или упоминание"
    event.msg_op(2, msg)
    return "ok"