https://blog.naskya.net/
Clone
HTTPS:
git clone https://code.naskya.net/repos/wzWnj
SSH:
git clone USERNAME@code.naskya.net:wzWnj
Branches
Tags
g37erumpy5xl.md
作ったもの
視聴したアニメの情報を Discord のチャンネルに自動的に投稿したくなったので、 Annictで記録した視聴情報を転送する bot を書きました。
Annict ではアニメの視聴状況として - 見てる - 見たい - 見た - 一時中断してる - 視聴中止した
の 5 つを設定できますが、このうち「見てる」と「見た」の記録のみを転送します(私がそれ以外を使わないので)。
また、アニメの作品という単位ではなく各話ごとに視聴を記録することもできますが、この転送にも対応していません(私が使わないので)。 というか各話ごとの記録を行った際にどうなるか試していないのでバグるかも(需要があれば確認します。 ソースコードは公開しているのでバグっていたら勝手に直して pull request をしてくれるのも歓迎です)。
使い方
{{}}. Discord bot の作成
まず Discord のアプリケーションを作成するページ からアプリケーションを作成します。
次に、設定の Bot
という項目から bot を作成します{{< note アプリケーションを作成しても bot を作成しなければ使えないので注意
>}}。
そして Bot
の上にある OAuth2
> URL Generator
の項目を開き - SCOPES
では bot
を - BOT PERMISSIONS
では Send Messages
と Embed Links
を
それぞれ選択するとページの下部に URL が表示されます。
ブラウザでこの URL にアクセスすれば作った bot をサーバーに招待できます。
{{}}. スクリプトの準備
スクリプトを好きな場所に clone して、clone したディレクトリに移動します。
{{}}. 必要な情報の指定
Discord bot のアクセストークン
先程開いていた Discord bot の管理画面に再び戻り、Bot
の項目からアクセストークンをコピーし、 クローンしたディレクトリにある config
というファイルの
DISCORD_BOT_ACCESS_TOKEN:
から始まる行に貼り付けます。
最初にダミーの文字列 0aA1bB2cC3dD4eE5fF6gG7hH8i.I9jJ0k.K1lL2mM3nN4oO5.pP6qQ7rR8sS9tT0uU1vV2wW
が入っているので、それを置換してください。 また、(ダミーの文字列がそうなっているように):
と貼り付けた文字列の間に半角空白が入るようにしてください。
Annict のアクセストークン
Annict にログインし、設定
> アプリケーション
> 新規作成
からアクセストークンを作成し、config
の
ANNICT_ACCESS_TOKEN:
から始まる行に貼り付けます。
Annict のユーザー ID
の ANNICT_ACCESS_TOKEN
を先程作ったアクセストークンに置換して実行すると json 形式のデータが返ってきます。
その情報に含まれる id:
に続く数値を config
の
ANNICT_USER_ID:
から始まる行に入力します。
Discord のチャンネル ID
投稿したい Discord チャンネルを右クリックしてチャンネル ID をコピーします。 このチャンネルには作成した Discord bot が参加している必要があります。
コピーされた値を config
の
DISCORD_CHANNEL_ID:
から始まる行に貼り付けます。
できた config
というファイルには一般公開してはならない情報(アクセストークン)が含まれるので、 管理には十分に注意してください。
{{}}. 手動で実行
main.py
を実行すると Discord のチャンネルにメッセージが投稿されるはずです。 当然、実行するとメッセージが投稿されてしまうので注意してください。
Python 3.9 以上がインストールされていて、python3
コマンドで呼び出せる必要があります。
過去に一度投稿した内容は再度投稿されないようにしているため、 上記のコマンドを再度実行すると今度はメッセージが投稿されないはずです。
チャンネルにメッセージを投稿することなく、現在までに視聴したアニメのデータを取得だけしておきたい (現時点で記録してあるものは投稿済みとして扱いたい)場合には dry
という引数をつけて実行します。
{{}}. 自動で実行
以下のような systemd サービスと systemd タイマーを作成します。
[Unit]
Description=forward activities recorded on Annict to Discord
[Service]
Type=simple
ExecStart=/path/to/annict-discord-bot/main.py
WorkingDirectory=/path/to/annict-discord-bot
[Install]
WantedBy=multi-user.target
[Unit]
Description=run annict-discord-bot
[Timer]
OnCalendar=*-*-* *:00/20:00
Persistent=true
[Install]
WantedBy=timers.target
/path/to/annict-discord-bot
は clone したリポジトリのパスに置換してください。
以下のコマンドでタイマーを有効化します。上記の設定では毎時 00,20,40 分にスクリプトが実行されます。
ログの確認には以下のコマンドを使用します。
ログを表示した画面:
タイマーを停止したいときには以下のコマンドを実行します。