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"
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"
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"
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"
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"