diff --git a/.gitignore b/.gitignore deleted file mode 100644 index d344ba6..0000000 --- a/.gitignore +++ /dev/null @@ -1 +0,0 @@ -config.json diff --git a/README.md b/README.md index 6ef2bbb..122d34f 100644 --- a/README.md +++ b/README.md @@ -1,21 +1,3 @@ -# Misskey Bot - -[Ранняя стадия разработки, авось что получится съедобное] -Какой функционал планируется у бота: -1. Бот-группа -2. Бот-ретранслятор с Twitter -3. Автопостер картинок из заданного каталога (готово на 80%) - -## 1 Как заставить бота работать? -1.1 В первую очередь нужно зайти в аккаунт бота на вашем инстансе, после этого перейти в настройки (шестерёнка) - API - создать токен доступа. -Предоствьте боту тот доступ, который будет предостаточен для выполнения ваших потребностей. - -1.2 Правильно заполните конфиг. Это очень важно, иначе бот не будет работать! - - - - -## - - +# misskey_bot +misskey bot. Python \ No newline at end of file diff --git a/config.json b/config.json deleted file mode 100644 index 19e5740..0000000 --- a/config.json +++ /dev/null @@ -1,6 +0,0 @@ - { - "name": "[Shitpost] PoridgeClub", - "url" : "https://shitpost.poridge.club", - "token": "ur_token", - "visibility": "public" - } diff --git a/main.py b/main.py deleted file mode 100644 index 64a7637..0000000 --- a/main.py +++ /dev/null @@ -1,116 +0,0 @@ -#!/usr/bin/python3 - -import requests # Для отправки http-запросов -import json -import time - -# Функция для чтения JSON-файла (например, конфига), аргумент - адрес файла в ФС -# Возвращает словарь -def json_read(file): - # Создается локальное окружение (или как эта хуйня зовется), где присутствует дескриптор для нашего файла - with open(file) as f: - config = json.load(f) - return config - -# Функция для получения уведомлений пользователя из Misskey -# Возвращает список словарей -# 2do: includeTypes как аргумент -def get_notifications(url, i): - print("Getting notifications from", url) - # Формируем URL для доступа к конкретной функции API - req_url = url + "/api/i/notifications" - - body = { - "i": i, - # Можно включить лишь определенные уведомления, всю эту залупу следует вынести также в аргументы функции, чтоб реагировать на конкретные события, типа подписки или упоминания, по-разному - #"includeTypes": [ - # "reply", - # "mention" - # ], - # Количество уведомлений, которые вытянем - "limit": 3, - "unreadOnly": False, - } - # Отправляем запрос, в тело запроса суем словарь-JSON, которые объявили выше - r = requests.post(req_url, json=body) - - # Если все прошло збс, код HTTP 200, то отдаем получанный список уведомлений - if r.status_code == 200: - # Можешь раскомментить, глянуть, что это за черт - #print(r.json()) - return r.json() - # Иначе, если не збс, то ругаемся - else: - print("Fuck") - -# Функция, создающая пост -# 2do: посты с картинками, ... -def create_post(content, url, i, visibility="public", channel="", fileIds=[]): - print("Post to", url, ":", content) - # Аналогично, адрес нужной функции API - req_url = url + "/api/notes/create" - body = { - # Не ебу, что за noExtract*, надо полуркать, но работает и збс пока что - "noExtractMentions": True, - "noExtractHashtags": True, - "noExtractEmojis": True, - "visibility": visibility, - "text": content, - "fileIds": fileIds, - # Если поставлен канал, то пост только локальный для инстанса - "localOnly": channel != "", - "i": i - } - if channel != "": - body["channelId"] = channel - # Отправляем запрос - r = requests.post(req_url, json=body) - # Аналогично, проверка на 200, в случае успеха 1 - if r.status_code == 200: - return 0 - else: - print("Failed to post:", r.text) - return 1 - -# Пока что можешь не пытаться разобраться, я сам отчасти хз, как это работает, лол - -def file_upload(file, url, i, isSensitive=False): - print("Uploading file to", url) - req_url = url + "/api/drive/files/create" - with open(file, "rb") as f: - fileo = f.read() - body = { - "isSensitive": False, - "force": True, - "i":i - } - body = json.dumps(body) - - payload = {'json_payload': body, 'i': i } - - files = {"file": (file, fileo)} - r = requests.post(req_url, data=payload, files=files) - if r.status_code == 200: - return r.json() - else: - print("Upload failed with code", r.status_code) - print(r.text) - -def get_file_list(url, i): - req_url = url + "/api/drive/files" - r = requests.post(req_url, json={"i":i}) - print(r.json()) -### Сюда надо захуярить еще 100500 функций### - -# Собсна, содержательная часть программы начинается тут - -# Читаем конфиг, получаем словарь -config = json_read('config.json') - -#notif_list = get_notifications(config['url'], config['token']) -#print(notif_list) -#file_upload('test.jpg', config['url'], config['token']) -im_info = file_upload('test.jpg', config['url'], config['token']) - -create_post("Nya~", config['url'], config['token'], fileIds=[im_info['id']]) -#print(notif_list) diff --git a/sources.md b/sources.md deleted file mode 100644 index 8ee67b9..0000000 --- a/sources.md +++ /dev/null @@ -1,12 +0,0 @@ -## API -https://misskey.io/api-doc - -## Примеры ботов -https://github.com/yupix/Mi.py - -https://github.com/TennousuAthena/RSSToMisskey - -https://github.com/theskanthunt42/misskeyInstanceCheckBot - -## Twitter API -https://www.earthdatascience.org/courses/use-data-open-source-python/intro-to-apis/twitter-data-in-python/ \ No newline at end of file diff --git a/test.jpg b/test.jpg deleted file mode 100755 index c5457e9..0000000 Binary files a/test.jpg and /dev/null differ