IT
October 14, 2021

🚀API — friday.daurge.ru

#API для доступа к базе F.R.I.D.A.Y. {🚀}. Доступ посредством GET/POST-запросов.

Получение основной информации (GET)


http://quotes.daurge.ru:8000/friday/{key}/{you_id}/{id}/{opt}

Передаваемые параметры:
key - ключ доступа, полученный от разработчика;
you_id - telegram id твоего аккаунта;
id - telegram id аккаунта, доступ к чьему профилю нужен;
opt -
info - для получения всей информации о пользователе;
ach - для получения всех существующих ачивок (здесь id можно указать любой);
otrs_name - для получения списка отрядов и его членов при запросе на id CEO;
penis_[ get | integer ] - для получения текущего значения | изменения на любое отрицательное или положительное;
smoothie - для увеличения счетчика рейтинга смузиваров на единицу в @StarkIndBot.

Пример использования:

1. Получение информации о юзере

> __info = requests.get('http://quotes.daurge.ru:8000/friday/{key}/{you_id}/775202338/info').json()
> print(__info)

< {"status":True,"msg":"Success.","user":{"id":"775202338","status":true,"tg_name":"Ведьма🐝","first_name":"Starvy","username":"zawwarudo","game_name":"⚡️[SE] ксуальный SEкс ","last_update":1628187611,"game_lvl":49,"rr":72,"otr":"-1001560275794","sum_stats":950,"books":520,"bolts":61,"gears":149,"admin":"user","achievements":"2 4 5"}}

status - true/false - отображение статуса ошибок;
msg - текст статуса;
user -
id - стандартный идентификатор telegram;
status - зарегистрирован ли пользователь в системе F.R.I.D.A.Y.;
tg_name - имя пользователя в telegram;
first_name - последнее сохраненное имя в Telegram;
username - юзернейм пользователя в Telegram/None;
game_name - игровой никнейм;
last_update - последнее обновление профиля (Timestamp);
game_lvl - игровой уровень пользователя;
rr - кол-во внутренней валюты системы F.R.I.D.A.Y.;
otr - id отряда пользователя/NULL;
sum_stats - сумма игровых статов пользователя;
books - количество книг у пользователя;
bolts - количество болтов у пользователя;
gears - количество шестеренок у пользователя;
admin - уровень привилегий пользователя (user, moder, admin, kom, crafter, leader, ceo, owner);
inv - инвентарь пользователя/NULL (у CEO по умолчанию NULL);
achievements - достижения пользователя (2 4 11)/NULL.

2. Получение и изменение пениса, смузи счетчика

> __info = requests.get('http://quotes.daurge.ru:8000/friday/{key}/{you_id}/775202338/penis_11').json()
> print(__info)

< {'status': True, 'user': {'len': '11', 'time': '1676046664'}}
> __info = requests.get('http://quotes.daurge.ru:8000/friday/{key}/{you_id}/775202338/smoothie').json()
> print(__info)

< {'status': True, 'user': {'count': '24', 'time': '1676046664'}

status - true/false - отображение статуса ошибок;
user -
penis_get - получение текущего значения; • penis_int - изменение значения, где int - любое число; • smoothie - прибавить единицу к счетчику приготовленных смузи; • time - последнее изменение параметра в timestamp.

3. Получение списка существующих достижений

> __ach = requests.get('http://quotes.daurge.ru:8000/friday/{key}/{you_id}/{you_id}/ach').json()
> print(__ach)

< {"status":True,"msg":{"1":{"name":"🧠Великий Прогер","description":"Выдается айтишникам, отличившимся во благо Stark Ind."},"2":{"name":"🧑‍💻Мамкин Тестер","description":"Выдается за успешную поимку бага."},"3":{"name":"🌈Генератор идей","description":"Выдаётся за крутые идеи развития пространства @StarkIndBot."}}

status - true/false - отображение статуса ошибок;
msg -
id достижения - • name - название ачивки с уникальным эмодзи на первом месте; • description - описание достижения.

4. Получение фраз (POST)

> params = {'skey': '618f91ea32c09ceefd8658c6'}
> __rr = requests.post('http://quotes.daurge.ru:8000/friday/phrases_get', data=params)
> print(__rr.json())

< {'status': True, 'msg': 'Success.', 'info': {'id': 12345, 'text': 'Тестовая фраза на финалОчку', 'admin_id': 12345, 'time1': 123456, 'time2': 1636798954, 'key': '618f91ea32c09ceefd8658c6'}}

skey (str/ObjectId) - получение информации о фразе по уникальному ключу.
• id - id пользователя, от которого принята фраза; • text - фраза пользователя;
• admin_id - id администратора, принявшего фразу;
• time1 - время отправки фразы пользователем в таймштампе;
• time2 - время принятия фразы от пользователя в таймштампе.

5. Получение полного списка фраз (POST)

> params = {'key': key, 'you_id': you_id, 'id': id}
> __rr = requests.post('http://quotes.daurge.ru:8000/friday/phrases_full', data=params)
> print(__rr.json())

< {"status":True,"msg":"Success.","info":{"id": 12345, "phrases":["618f9a337e9a943fc1fa4a34"]}}

key - ключ доступа, полученный от разработчика;
you_id - telegram id твоего аккаунта;
info - формирует список ключей всех фраз пользователя, чей id был передан (id) 'phrases'.

6. Капча: генерация, получение, проверка (GET)

Принимаемые параметры:
- id: целое число, представляющее Telegram ID пользователя.
- type: строка, представляющая тип captcha (либо "audio", либо "image").
- status: строка, представляющая статус капчи (либо "True", либо "False"). Значение по умолчанию - "False".
- var: строка, представляющая текст капчи. Значение по умолчанию - "False".

Возвращаемые параметры:
- Если type - "audio":
- status: логическое значение, указывающее, была ли генерация captcha успешной.
- file: строка, представляющая имя файла сгенерированной звуковой капчи.
- caption: строка, содержащая текст отображения для пользователя.
- buttons: список целых чисел, представляющих возможные варианты ввода капчи.

- Если type - "image":
- status: логическое значение, указывающее, была ли генерация captcha успешной.
- file: строка, представляющая имя файла сгенерированной капчи изображения.
- caption: строка, содержащая текст отображения для пользователя.
- buttons: список целых чисел, представляющих возможные варианты ввода капчи.

- Если статус равен "False", а var не является "False":
- status: логическое значение, указывающее, является ли решение captcha правильным.
- text: строка, предоставляющая обратную связь пользователю.

- Если возникает исключение:
- status: логическое значение, указывающее, была ли генерация или проверка captcha успешной.
- msg: строка, содержащая подробную информацию об исключении.

- Если ни одно из вышеперечисленных условий не выполнено:
- status: логическое значение, указывающее, была ли генерация или проверка captcha успешной.
- text: словарь, содержащий подробную информацию о капче.

6.1 Генерация изображения | аудио

> __info = requests.get('http://quotes.daurge.ru:8000/captcha/{id}/{type}/{status=True}/{var=False}').json()
> print(__info)

< {
	"status": True,
	"file": "seobot_captcha_images_1198.png",
	"caption": "Выбери кнопку с верным числом для верификации:",
	"buttons": [1002, 8521, 8458, 1198, 8931]
  }

id - ID пользователя Telegram;
type - тип генерируемой капчи (image | audio);
status - True, указывается при необходимости генерации;
var - False, указывается при отсутствии проверки введенного варианта;
status - отображение статуса запроса;
file - параметр ссылки для получения изображения;
caption - возвращает строку для отображения пользователю;
buttons - формирует список вариантов, среди которых гарантируется один верный.

6.2 Получение изображения | аудио

> img = requests.get('http://quotes.daurge.ru:8000/captcha/{file_link}')
> with open(f'images/{file_link}.{opt}', 'wb') as img_file: 
    img_file.write(img.content)

file_link - параметр ссылки, полученный после генерации в 6.1 в "file";
opt - png | ogg.

Пояснение: на примере выполняется запрос получения изображения | аудио по параметру ссылки, полученному в 6.1. После получения сохраняется в директорию images под именем равным параметру ссылки и с расширением .png | .ogg в зависимости от типа капчи.

6.3 Проверка на переданный параметр

> __info = requests.get('http://quotes.daurge.ru:8000/captcha/{id}/{type=False}/{status=False}/{var}').json()
> print(__info)

< {
	"status": False,
	"text": "Попробуй еще раз."
  }

< {
	"status": True,
	"text": "⚡️Отлично! Капча решена верно."
  }

< {
	"status": False,
	"text": "🤖Увы и ах, ты ответил неверно. Пока, бот."
  }

id - ID пользователя Telegram;
type - тип генерируемой капчи. При валидации отсутствует необходимость передачи конкретного параметра и по умолчанию принимает любое значение;
status - False, указывается при отсутствии необходимости генерации;
var - число, вариант, выбранный пользователем;
status - отображение статуса запроса;
text - возвращает строку для отображения пользователю.

Изменение параметров (GET | POST)

Существует два основных метода изменения следующих данных:

1. Выдача и удаление достижений

> __ach = requests.get('http://quotes.daurge.ru:8000/friday/{key}/{you_id}/{id}/ach/do/2').json()
> print(__ach)

< {"status":True,"msg":"Success."}

• opt - do/undo - забрать/выдать достижение по его id.

2. Списание валюты

> __rr = requests.get('http://quotes.daurge.ru:8000/friday/{key}/{you_id}/{id}/rr_10').json()
> print(__rr)

< {"status":True,"msg":"Success. Change = 1. Current balance = 268"}

• id - id пользователя, у которого списывается валюта; • rr_1 - списываемое кол-во валюты (указывается после нижнего подчеркивания).

3. Добавление фраз (POST)

> params = {'key': key, 'you_id': you_id, 'id': int(id), "text": text, 'admin_id': int(admin_id), 'time1': int(time1)}
> __rr = requests.post('http://quotes.daurge.ru:8000/friday/phrases', data=params)
> print(__rr.json())

< {"status":True,"msg":"Success.","info":{"id":12345,"text":"Тестовая фраза на финалОчку","key":"618f9a337e9a943fc1fa4a34"}}

• id - id пользователя, от которого принимается фраза; • text - сама фраза пользователя;
• admin_id - id администратора, принявшего фразу;
• time1 - время отправки(!) фразы пользователем в таймштампе;
• < key - уникальный ключ для получения информации о фразе.


Ошибки и их описания

В подавляющем большинстве status = True возвращает msg = Success. В случае status = False, предусмотрены следующие ошибки:

rr:

1. - {'status': False, 'msg': 'Insufficient funds.'}

2. - {'status': False, 'msg': 'No options are specified.'}

• основные запросы:

1. - {'status': False, 'msg': 'This key is not yours.'}

2. - {'status': False, 'msg': "You don't have access."}

do/undo:

1. - {'status': False, 'msg': 'Error.'}

phrases:

1. - {'status': False, 'msg': 'This phrase is already in use.'}

2. - {'status': False, 'msg': 'This phrase dont create.'}

penis | smoothie:

1. - {'status': True, 'user': {'len': '0', 'time': '0', 'msg': 'User is banned.'}}

2. - {'status': False, 'user': {'len': 0, 'time': 0, 'msg': 'User isn`t registered.'}}

В случае отсутствия регистрации пользователя в системе F.R.I.D.A.Y., API вернет:

{'status': True, 'msg': 'Success.', 'user': {'id': id, 'status': False, 'name': 'NULL'}}