docs: for new config
fix: json load problem
This commit is contained in:
parent
b9ffca44c2
commit
4b9b163e92
28
README.md
28
README.md
@ -17,13 +17,27 @@ Google 스프레드시트를 기반으로 지정된 문구들을 자동적으로
|
|||||||
* @멘션 시 입력된 문구 정보와 함께 즉시 문구를 출력할 수 있는 기능
|
* @멘션 시 입력된 문구 정보와 함께 즉시 문구를 출력할 수 있는 기능
|
||||||
|
|
||||||
## Options
|
## Options
|
||||||
.env.example 파일을 참조하여 .env 파일을 작성해주세요.
|
config.example.josn 파일을 복사 후 config.json으로 이름 변경 후 작성해주세요.
|
||||||
```
|
```json
|
||||||
MISSKEY_TOKEN : 계정 액세스 토큰
|
{
|
||||||
MISSKEY_ORIGIN : 호스트 서버 이름 (misskey.io, phater.live...)
|
"token": "여기에는 토큰을 넣어주세요",
|
||||||
MAX_DUPLICATE_COUNT : 중복 시 출력되지 않게 할 간격
|
// 봇을 실행할 계정에서 "설정 -> 기타 설정의 API -> 액세스 토큰 생성 -> `노트를 작성하거나 삭제합니다` 체크 후 나온 값"
|
||||||
(3으로 설정 시 다음 3개의 문구가 나올 동안은 출력되지 않음)
|
"origin": "여기에는 서버 주소를 넣어주세요",
|
||||||
WORKSHEET_URL : 문구를 불러올 스프레드시트 URL
|
// (k.lapy.link, phater.live... etc)
|
||||||
|
"max_duplicate": 3,
|
||||||
|
// 중복으로 처리할 대사의 최대 수
|
||||||
|
"rate": 60,
|
||||||
|
// 자동 노트 게시 간격 (분 단위)
|
||||||
|
"visibility": "home",
|
||||||
|
// 공개 범위 (public, home, followers, specified)
|
||||||
|
"worksheet": "여기에는 구글 스프레드시트 주소를 넣어주세요",
|
||||||
|
"template": {
|
||||||
|
"auto": "{text}",
|
||||||
|
// 자동으로 게시되는 노트의 템플릿 {text} = 내용 {from} = 예시 시트 기준 "대사 위치" {number} = 예시 시트 기준 "대사 번호" (꼭 숫자일 필요 없음)
|
||||||
|
"mention": "{text}\n \n<small>{from}에서 발췌됨. ({number}번 대사)</small>"
|
||||||
|
// 답장으로 게시되는 노트의 템플릿 {text} = 내용 {from} = 예시 시트 기준 "대사 위치" {number} = 예시 시트 기준 "대사 번호" (꼭 숫자일 필요 없음)
|
||||||
|
}
|
||||||
|
}
|
||||||
```
|
```
|
||||||
|
|
||||||
## How
|
## How
|
||||||
|
@ -6,7 +6,7 @@
|
|||||||
"visibility": "home",
|
"visibility": "home",
|
||||||
"worksheet": "YOUR_WORKSHEET_URL_HERE",
|
"worksheet": "YOUR_WORKSHEET_URL_HERE",
|
||||||
"template": {
|
"template": {
|
||||||
"auto": "{note}",
|
"auto": "{text}",
|
||||||
"mention": "{note}\n \nFrom {from} ({number})"
|
"mention": "{text}\n \n<small>{from}에서 발췌됨. ({number}번 대사)</small>"
|
||||||
}
|
}
|
||||||
}
|
}
|
10
main.py
10
main.py
@ -1,6 +1,5 @@
|
|||||||
import asyncio
|
import asyncio
|
||||||
import json
|
import json
|
||||||
import os
|
|
||||||
import random
|
import random
|
||||||
|
|
||||||
import gspread
|
import gspread
|
||||||
@ -12,7 +11,8 @@ from mipa.ext import commands
|
|||||||
|
|
||||||
class Config:
|
class Config:
|
||||||
def __init__(self, path: str) -> None:
|
def __init__(self, path: str) -> None:
|
||||||
raw = json.load(path)
|
file = open(path)
|
||||||
|
raw = json.load(file)
|
||||||
self.token = raw.get("token")
|
self.token = raw.get("token")
|
||||||
self.origin = raw.get("origin")
|
self.origin = raw.get("origin")
|
||||||
self.max = raw.get("max_duplicate")
|
self.max = raw.get("max_duplicate")
|
||||||
@ -51,7 +51,7 @@ class Autoposter(commands.Bot):
|
|||||||
|
|
||||||
def get_worksheet(self) -> Worksheet:
|
def get_worksheet(self) -> Worksheet:
|
||||||
gc = gspread.service_account()
|
gc = gspread.service_account()
|
||||||
sh = gc.open_by_url(self.config["worksheet"])
|
sh = gc.open_by_url(self.config.worksheet)
|
||||||
worksheet = sh.get_worksheet(0)
|
worksheet = sh.get_worksheet(0)
|
||||||
return worksheet
|
return worksheet
|
||||||
|
|
||||||
@ -72,7 +72,7 @@ class Autoposter(commands.Bot):
|
|||||||
await self.router.connect_channel(['main', 'global'])
|
await self.router.connect_channel(['main', 'global'])
|
||||||
|
|
||||||
async def on_ready(self, ws: ClientWebSocketResponse):
|
async def on_ready(self, ws: ClientWebSocketResponse):
|
||||||
print(f"Connected as @{self.user.username}@{self.user.host}")
|
print(f"Connected as @{self.user.username}@{self.config.origin}")
|
||||||
await self._connect_channel()
|
await self._connect_channel()
|
||||||
extensions = [
|
extensions = [
|
||||||
"exts.post"
|
"exts.post"
|
||||||
@ -97,4 +97,4 @@ class Autoposter(commands.Bot):
|
|||||||
if __name__ == '__main__':
|
if __name__ == '__main__':
|
||||||
bot = Autoposter()
|
bot = Autoposter()
|
||||||
loop = asyncio.get_event_loop()
|
loop = asyncio.get_event_loop()
|
||||||
loop.run_until_complete(bot.start(f"wss://{bot.config.origin}/streaming", os.getenv("MISSKEY_TOKEN")))
|
loop.run_until_complete(bot.start(f"wss://{bot.config.origin}/streaming", bot.config.token))
|
||||||
|
Loading…
Reference in New Issue
Block a user