README.md 2.88 KB
Newer Older
DW's avatar
DW committed
1 2
# 마스토돈 검색봇
[플래닛](https://planet.moe)에 검색서버가 안붙어있는게 불편해서 만들고 있어요!
DW's avatar
DW committed
3

DW's avatar
DW committed
4 5
[보러 가기 (Beta)](https://planet.moe/@search)

DW's avatar
DW committed
6
## 지금 안되는것들
DW's avatar
DW committed
7
1. CI/CD 셋업 (귀찮아...)
DW's avatar
DW committed
8

DW's avatar
DW committed
9
## 개발 플랜
DW's avatar
DW committed
10
<details>
DW's avatar
DW committed
11
<summary>겁나김</summary>
DW's avatar
DW committed
12

DW's avatar
DW committed
13
### Glossary
DW's avatar
DW committed
14
> Todo: `❌` | Partial: `⚠️` | Done (not tested): `✔️` | Tested: `✅`
DW's avatar
DW committed
15

DW's avatar
DW committed
16
### 당장 할거
DW's avatar
DW committed
17 18 19
1. TL 스트리밍 크롤링 기능 구현 `✅`
	* 공개랑 Unlisted만 크롤링 `✅`
		- 부스트 제외하는거 까먹지말자 `✅`
DW's avatar
DW committed
20
	* 스트리밍 죽으면 다시 살린다! `✔️`
21
		- 리트라이 간격은 ln(x) 분마다 `✔️`
22 23 24 25 26
2. 팔로우시 맞팔 `✅`
	* 팔로우하면 EULA 동의 기능 구현할것 `✅`
		- 대충 크롤링당한다는 거에 동의한다는 내용 `✅`
		- 팔로당하면 안내 보내고, 동의했을 경우에만 맞팔 `✅`
	* 플래닛이 아니면 안내 후 블언블 `✅`
DW's avatar
DW committed
27
		- 부하 얼마나 걸리나 보고 다른 인스턴스 유저에도 열지 결정할께요
DW's avatar
DW committed
28
			- 부하 심하면 expensive한 쿼리는 새벽 4시에 돌리는걸로 코드 수정해보고 함보기
DW's avatar
DW committed
29 30
3. Forget Me 구현 `✅`
	* 블언블 후 삭제쿼리 돌리기 `✅`
31
	* 돌린 담에 DM으로 안내 `✅`
DW's avatar
DW committed
32 33
4. 검색 기능 구현 `✔️`
	* 팔로우된 사람만 사용가능 `✅`
DW's avatar
DW committed
34
		- 기브앤테이크! 글구 SQLite 쓸꺼라 쿼리 너무 많이 날리면 봇터짐
DW's avatar
DW committed
35 36 37 38 39 40 41 42 43 44 45 46 47
	* 답글은 질문글의 공개설정 따라가기 `✅`
		- Public은 Unlisted로 `✅`
	* 쿼리는 trim한다음에 돌리기 `✅`
		- 공백 들어가면 헷갈리기 시작한다
	* 한글은 2글자이상, 영문은 4글자이상 `✅`
		- trim한 후에 단어별로 계산 `✅`
	* 블랙리스트 키워드 만들기 `✅`
		- `youtube`라던가... `.com`이라던가 `the`라던가 서버에 부하줄것 같은것들.. `✅`
	* 결과 주소 인스턴스에 쿼리해보고 삭제된 글이면 스킵, 후에 DB 레코드에서도 삭제 `✅`
		- 근데 결과 너무 많으면 쓰로틀링 걸리지 않을까.. `✔️`
	* 500자 넘어가면 답글 여러개 이어서 다는거 구현 `✅`
5. 명령어들 `✅`
	* 봇이 보낸건 무시 `✅`
DW's avatar
DW committed
48 49
	* !!help 같은거 `✅`
	* 대충 필요한게 !!help, !!forgetme, !!from: 빼고 또있으려나?? `✅`
DW's avatar
DW committed
50
6. 맛톤에서 개인이 백업 json 받을수있는거 DB에 추가해주는 기능 구현 `❌`
DW's avatar
DW committed
51 52 53 54 55 56 57 58 59
	* 근데 어떻게 봇한테 json을 보내지?? 맛톤에 파일첨부 되던가???

### 나중에 할지도 모르는거
1. Rust에 await/async 확실하게 stabilize되면 Rust랑 MariaDB/PostgreSQL로 옮길꺼야
2. 중앙 API서버? 같은거 하나 두고 봇은 인스턴스에 하나씩 돌아가게 만든다음 여러 서버에서 검색하는거?
	* 근데 좀 멍청한 구현인것 같다
</details>

## 사용법
DW's avatar
DW committed
60 61 62 63
`//TODO:`

## Special thanks to
귀여운 로고 사용을 허락해주신 [planet.moe의 운영자님](https://planet.moe/@planet)