# HERE WE GO # -------- RUS --------- # ⚠️ Для тех, кто не понял ⚠️ # Именно здесь вы можете тыкать UserAPI. # Секция UserAPI - для вас. # # ⚠️ Если вы хотите с асинхрон ⚠️ # Перейдите в call2user_api.py # # Если вы не находитесь на сервере (а вы не находитесь), вам нужно поменять url_prefix. # Сделать формата 'https://vpc-api.del.pw' (если эта ссылка не устарела) # # Секция SystemAPI и call2api.py вам не нужен, но можете его изучить. # Эта часть кода взаимодействует с SystemAPI, который недоступен. # # Для использования просто импортировать этот файл и использовать функции: # ``` # from call2user_api_sync import * # ... # user = user_in_db(username, user_token) # ``` # Можете переносить файл куда хотите, но вместе с db.py (функция read() + авто-создание конфигурации) # ---------------------- # Загрузка префикса UserAPI # (МЕНЯЙТЕ URL!!! если нужно, в config.json) from db import read import requests from json import loads # Synchronous database read CONFIG = read() url_prefix = CONFIG['user_api_url'] def call(api_url, data, pre=True, fix=True): url = (url_prefix + api_url) if pre else api_url with requests.Session() as session: response = session.post(url, json=data) text = response.text try: json = loads(text) if 'detail' in json: return json['detail'] else: return json except: if fix: return text.replace('"', '') else: return text #------------------------------------------------------------ # UserAPI #------------------------------------------------------------ # Получение информации о токене # IN : username (str), user_token (str) # OUT: {'issue_date': str, 'logs': str} / 'Invalid username or token' (401) / 'Token not exist' (404) / General error (500) def get_user_token_info(username, user_token): data = {'username': username, 'user_token': user_token} return call('api/get_user_token_info/', data) # Получение пользователя (ник, айди ТГ, ДС и т.п.) # IN : username (str), user_token (str) # OUT: { # "creator_id_type": str, # "username": str, # "mine_uuid": str, # "tg_id": int, # "balance": float, # "tokens": "{}", # "password": "HIDDEN", # "creator_id": str, # "mine_name": str, # "ds_id": int, # "frozen": "no"/"temporarily"/"forever", # "last_activity": null, # } / 'Invalid username or token' (401) / 'User not found' (404) / General error (500) def user_in_db(username, user_token): data = {'username': username, 'user_token': user_token} return call('api/user_in_db/', data) # Перевод монет # IN : username (str), user_token (str), dst_username (str), amount (float) # OUT: 'OK' / 'Invalid username or token' (401) / 'No money' (400) / 'Too low' (400) # / 'User not found' (404) / 'Frozen temporarily' (401) / 'Frozen forever' (401) # / General error (500) def transfer_coins(username, user_token, dst_username, amount): data = {'username': username, 'user_token': user_token, 'dst_username': dst_username, 'amount': amount} return call('api/transfer_coins/', data) # Получение глобальной статистики # IN : username (str), user_token (str) # OUT: { # "amount": float, # "frozen_amount": int, # "users": int, # "frozen_users": int, # "average": float, # "median": float, # "min": float, # "max": float # } / 'Invalid username or token' (401) / General error (500) def get_stats(username, user_token): data = {'username': username, 'user_token': user_token} return call('api/get_stats/', data) # Создание счёта на оплату, чтобы проверить оплачен ли он # Использование в боте: /pay <ник> <сумма> # IN : username (str), user_token (str), amount (float) # OUT: invoice_id (str) / 'Invalid username or token' (401) / 'Destination user not found' (401) # / General error (500) def create_invoice(username, user_token, amount=None): data = {'username': username, 'user_token': user_token} if amount: data['amount'] = amount return call('api/create_invoice/', data) # Удаление счёта на оплату по invoice_id # IN : username (str), user_token (str), invoice_id (str) # OUT: 'OK' / 'Invalid username or token' (401) / 'Invoice id not found' (404) / General error (500) def delete_invoice(username, user_token, id): data = {'username': username, 'user_token': user_token, 'id': id} return call('api/delete_invoice/', data) # Получение информации о счёте на оплату # IN : username (str), user_token (str), invoice_id (str) # OUT: { # "id": str, # "dst_username": str, # "amount": null / float, # "status": false/true # } / 'Invalid username or token' (401) / 'Invoice id not found' (404) / General error (500) def get_invoice(username, user_token, id): data = {'username': username, 'user_token': user_token, 'id': id} return call('api/get_invoice/', data) #------------------------- END ------------------------------