Misskeyでランダムに投稿するbotをつくる
ある意味Twitterよりも簡単だったのでメモ。なお、有料ですが最後まで無料でも読めます。
必要なもの
・Linuxが動いてるサーバー(VPSなどでも可。ここではUbuntu 22.04を)
・python3
・Misskey.pyモジュール
なお、Ubuntuサーバはもう立ち上がっていて、python3がインストールされていることを前提とします。
pipとMisskey.pyをインストール
入っていない場合があるので、pipをインストール。aptから行けます。
sudo apt install python-pip -y
続いてMisskey.pyをインストール。
python3 -m pip install Misskey.py
投稿したい文章を登録
投稿したい文章をテキストファイルに登録します。
このとき、1行が1回に投稿される文章となり、複数行が登録されている場合は、ランダムに行が選択され、その内容を投稿するようになります。ここでは「notes.txt」という名前のファイルとして保存します。エディタといえばviですが、初心者の皆さんは遠慮なくnanoを使いましょう。
nano notes.txt
test1
test2
test3
このとき、最後の行は改行しないように。改行があると「1行」とみなされて、改行だけのノートが投稿されます(まあ、スクリプトでチェックすればいいだけのハナシなんですけどね)
スクリプトの準備
スクリプトを作ります。やはりテキストエディタで作ります。ファイル名create_note.pyとでもしておきましょう。
まず、お決まりのシバン。今回はpython3を使うので、
#!/usr/bin/python3
続いてモジュールを読み込ませます。ここではMisskey.pyの他に、乱数を発生させるrandomをimportさせます。(pythonをインストールするとすでに入ってるっぽい?)
import random
from misskey import Misskey
さらに、Misskeyのサーバー名とAPIトークンを設定します。
api = Misskey('Misskeyのサーバー名')
api.token = "APIトークン"
続いて、先に保存したnotes.txtを取り込みます。
with open('/path/to/notes.txt', 'r', encoding='utf-8') as f:
lines = f.readlines()
linesの行はインデント(字下げ)しています。これはその前の行の一番最後の:に続く行は「一連のルーチン(作業)ですよ」とpythonに分からせるための書式です。半角スペースで4個、ないし8個を追加します。TABでもいいですが、同じ処理群は同じ字下げで統一しなければならないようです。
そして、変数linesに読み込んだテキストファイルから、ランダムに1行取り出します。おあつらえ向けに「そのまんま」の関数があります。
data = random.choice(lines)
最後に、1行選んだ文字列をMisskeyに投稿します。
api.notes_create(text=data)
APIトークンなどに間違いがなければ、これでnoteが投稿されます。
ここまでのスクリプトをまとめるとこんな感じです。
#!/usr/bin/python3
import random
from misskey import Misskey
api = Misskey('Misskeyサーバー名')
api.token = "APIトークン"
with open('/path/to/notes.txt', 'r', encoding='utf-8') as f:
lines = f.readlines()
data = random.choice(lines)
api.notes_create(text=data)
保存したら、ファイルに実行属性を与えます。
chmod 755 create_note.py
実行してみる
今作ったスクリプトを実行してみると・・・
./create_note.py
このように、登録している文章のうち一つがランダムに投稿されます。
再度実行すると、
違う文章が選択されて投稿されます(文章が少なかったりすると同じものが投稿される場合があります)。
このスクリプトをcronに登録することで、スクリプトが自動的に実行され、botとして動作させることができます。たとえば、毎時15分に投稿したい場合、cronには次のように登録します。
15 * * * * /path/to/create_note.py
なお、cronの使い方は、先輩諸氏のnoteを参考に
こんなかんじで、割と簡単に自動投稿botが作れたりします。当然、TwitterXのように、APIの呼び出し制限とかは無いので、サーバー管理者の迷惑にならない範囲で使っていきましょう。
ここから先は
¥ 500
この記事が気に入ったらサポートをしてみませんか?