見出し画像

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の呼び出し制限とかは無いので、サーバー管理者の迷惑にならない範囲で使っていきましょう。

ここから先は

0字

¥ 500

この記事が気に入ったらサポートをしてみませんか?