それぞれが独立したbotになっています。
gpt/gptbot.py
)特定のチャンネルにChatGPTを常駐させます。
gpt-hflush
: ChatGPTのチャット履歴を消去するgpt-switch
: 言語モデルをgpt-3.5-turboとgpt-4との間でスイッチングするgpt-system
: ChatGPTのキャラクター設定をするgpt
: 常駐チャンネルに限らず任意のチャンネルでGPTを呼び出すyoutube/youtubebot.py
)監視登録チャンネルのRSSに更新があった場合にチャンネルに情報を流します。
時間情報の取得のためにYouTube APIを叩く必要があります。叩きすぎるとrate limitに引っかかるので、15分に1回の設定にしています。
youtube/db.py
, youtube/models.py
が依存ファイルです。
youtube-register
: 監視リストに登録するyoutube-unregister
: 監視リストから登録解除するyoutube-registeration-list
: 監視リストを一覧表示するarxiv/arxivbot.py
)arXivの対象フィードを定期的に見に行って、チャンネルに情報を流します。
Notionと連携で、リアクションを押した場合にNotionのデータベースに流せます。
フィードはコマンドで登録します。対応するチャンネルがbotにより自動で生成されます。
arxiv/db.py
, arxiv/models.py
が依存ファイルです。
arxiv-register
: 監視リストに登録する
arxiv-unregister
: 監視リストから登録解除するarxiv-registeration-list
: 監視リストを一覧表示するarxiv-change-scheduling
: RSSを見にいく時間の設定を変更する(cron式で記述).env
の設定
OPENAI_API_KEY
: ChatGPTキーDISCORD_BOT_TOKEN_GPT
: DiscordのChatGPT botトークンDISCORD_BOT_TOKEN_YOUTUBE
: DiscordのYouTube botトークンDISCORD_BOT_TOKEN_ARXIV
: DiscordのarXiv botトークンYOUTUBE_API_KEY
: YouTube api v3を叩く用 GCPで取得するGAE_TRANSLATE_URL
: GAEで自分で設置するGoogle TranslateしてくれるAPICHANNEL_ID_GPT
: GPT botが投稿するチャンネルのIDCHANNEL_ID_YOUTUBE
: YouTube botが投稿するチャンネルのIDNOTION_TOKEN
: Notionのトークン(arXiv botでリアクションしたらNotionに転送したい時用)NOTION_DATABASE_ID
: Notionのデータベースのid(arXiv botでリアクションしたらNotionに転送したい時用)CHANNEL_ID_ARXIVEXPORT
: arXiv botでリアクションをした投稿を転送するチャンネルのID(デフォルトは同じチャンネル)pyproject.toml
にログの設定
logs
フォルダに各ファイルの実行履歴が流れる/etc/systemd/system
.service
).timer
を併用).
├── dbs
│ ├── arxiv.db
│ └── youtube.db
├── discord_bot
│ ├── arxiv
│ │ ├── arxivbot.py
│ │ ├── db.py
│ │ └── models.py
│ ├── gpt
│ │ └── gptbot.py
│ ├── __init__.py
│ └── youtube
│ ├── db.py
│ ├── models.py
│ └── youtubebot.py
├── .env
├── logs
│ ├── arxivbot.log
│ ├── gptbot.log
│ └── youtubebot.log
├── poetry.lock
├── pyproject.toml
└── README.md
tests
└── __init__.py