はじめに
TwitchのBotってPythonで作れるのかな~と調べていたところ日本語の記事が見つからず、英語アレルギーの自分には苦しい翻訳作業の連続だったので、僕と同じような英語アレルギーの人のお役に立てたらなと記事にして残しておきたいと思います。
TwitchIOというラッパーで簡単に作れるようなので、今回はこれを使用してBotを実際に作るところまで1から説明していきたいと思います。(エディタは省略)
原理まで書くととても長くなってしまうので機能を深く掘り下げるのはまた今度として、挨拶を返してくれるBotが完成するところまでです。面倒くさいわけでは決してありません(クソデカボイス)
この記事をきっかけに日本人ユーザーが増えてQiitaの記事も沢山出始めてくれたらな~と願っています。
また、間違った説明をしてしまっている箇所がありましたらコメントの方にお願いします
TwitchIOとは
An Asynchronous IRC/API Wrapper currently in Development for TwitchBots made in Python!
(https://pypi.org/project/twitchio/ より引用)
**PythonでTwitchのBotを作ることが出来るラッパーだよ!**と思ってもらえれば大体あってます。
Let's make a Twitch bot with Python!という記事を参考にしながら作成していきます。
OSはWindows 10を使用しています。
といってもMacでもやり方はほぼ変わりません。
手順
- Twitchアカウントの作成
- Pythonをインストール
- TwitchIOをインストール
- OAuthパスワードを作成
- Twitch Developersでアプリケーション登録
- コーディング
- 実践テスト
1. Twitchアカウントの作成
まずはBotとして扱うTwitchのアカウントを作成していきます。
そのアカウントそのものがBotとして動作するので、普段配信や視聴しているアカウントとは別で作成したほうがいいと思います。
これは自分のアカウントでbot登録してしまった為、自らがbot化してしまったmaguro869 pic.twitter.com/EhBItUtmeH
— 🍣 (@maguro869) April 8, 2020
今後Botを運用していく上で、Botが発言したことは無視するように設計しますので放送主のアカウントではBotを作らないようにして下さい。
そういう設計をしなかったとしてもちょっと寂しいBotになってしまいます。
https://www.twitch.tv/ を開いて右上の「登録」をクリックして下さい。
(既に普段使いのアカウントでログインしている場合はログアウトしてから)
アカウント情報を入力して「登録」をクリックしてください。
今回私はsalmon869という名前のBotを作成します。サーモンよりマグロの方が絶対おいしい
登録したメールアドレスの方にTwitchから6桁のアカウント認証コードが届いていると思うので、遷移した画面にそれを入力してください。
(Gmailだとプロモーションの所に届いていたので見つけづらいかもしれません...)
これにてアカウント登録は完了です。
この後、Twitch Developersにアプリケーション登録する際に2段階認証を済ませておく必要があるので、それを先にしておきましょう。
https://www.twitch.tv/settings/security こちらのページを開いて「セキュリティ」のところにある「2段階認証」の「2段階認証を設定する」というボタンをクリックして下さい。
左側は**+81を選択し右側にお使いの携帯番号を入力して下さい。続行を押すと携帯の方に認証コードが記載されているSMS**が届きます。
それを入力して認証完了です。
これでBotに使用するアカウントの準備は完了です。
2. Pythonをインストール
Githubには
TwitchIO requires Python 3.6 or higher.
と書いてありますので、最新版でも対応してるみたいです。
2020/04/09現在で最新のPython3.8.2をインストールします。
既に3.6より上のバージョンをインストールしている場合は次の「3. TwitchIOをインストール」に進んでも大丈夫です。
https://www.python.org/downloads/ を開いて「Download Python 3.8.2」をクリックして下さい。
ダウンロードされた「python-3.8.2.exe」を起動してください。
「Add Python 3.8 to PATH」にチェックを入れた後、「Install Now」をクリックして下さい。
この画面になったら完了です。「Close」をクリックして閉じて大丈夫です。
これでPythonのインストールは完了です。
3. TwitchIOをインストール
TwitchIOをインストールするにはpipコマンドを使用します。
デスクトップ左下のWindowsマークをクリックし、「cmd」と入力すると「コマンドプロンプト」と検索結果に出ますのでクリックして下さい。
起動したら「py -m pip install twitchio」と入力してEnterキーを押して下さい。
色々バーっと出た後に「Successfully installed twitchio-1.0.0」と出たらインストール完了です。
4. OAuthパスワードを作成
TwitchのAPIを利用するためにはOAuthパスワードを取得する必要があります。
https://twitchapps.com/tmi/ このサイトでとても簡単に取得可能です。
「Connect」をクリックして下さい。
「許可」をクリックして下さい。
「oauth:~」とパスワードが表示されるのでどこかにメモをしておいて下さい。
これでOAuthパスワードの作成は完了です。
##5. Twitch Developersでアプリケーション登録
続いて、Twitch Developersでアプリケーション登録をしてクライアントIDを取得します。
https://dev.twitch.tv/console/apps/create を開いてください。
「Authorize」をクリックして承認してください。
このような画面に遷移するのでそれぞれの項目を入力/選択してください。
- 名前:Botのアカウント名(分かりやすければOK)
- OAuthのリダイレクトURL:先ほどメモしたoauth:~
- カテゴリー:Chat Botを選択
終わったら「作成」をクリックして下さい。
このような画面に遷移したら「管理」をクリックして下さい。
クライアントIDが記載されているのでそれをメモしておいてください。今回はシークレットトークンは使用しないので作成しなくて結構です。
これでTwitch Developersでアプリケーション登録は完了です。
6. コーディング
それでは実際にコーディングしていきましょう。
Twitch_botというフォルダを作成し、その中で作業していきます。
まずはデータを格納しておくconfig.pyを作成します。
以下は例ですので各々の情報を入力してください。
TMI_TOKEN = 'oauth:~' # メモしたoauth:~のアレ
CLIENT_ID = 'xxxxxxxxxxxxxxxxxxxx' # メモしたクライアントID
BOT_NICK = 'salmon869' # Botのアカウント名
BOT_PREFIX = '!' # この文字を作成したコマンドの頭に付けることでコマンドと認識してくれます
CHANNEL = ['maguro869'] # 実際に配信をするアカウント名
これでmaguro869というアカウントで動くBotのconfig.pyは作成できました。
続いてBotの本体となるbot.pyを作成します。
from twitchio.ext import commands
from config import *
bot = commands.Bot(
irc_token=TMI_TOKEN,
client_id=CLIENT_ID,
nick=BOT_NICK,
prefix=BOT_PREFIX,
initial_channels=CHANNEL
)
@bot.event
async def event_ready():
print(f"{BOT_NICK}がオンラインになりました!")
if __name__ == "__main__":
bot.run()
これでコーディングは終了です。
7. 実践テスト
入力が終わったら一度実行してみましょう。
Twitch_botフォルダを開いてShiftを押したまま右クリックして「PowerShellウィンドウをここで開く」でPowerShellを開いてください。機能としては大体コマンドプロンプトと同じです(大きいお友達のみんな、怒らないで)
起動したら「py bot.py」と入力しEnterキーを押してBotを起動してみましょう。
「{Botのアカウント名}がオンラインになりました!」と表示されたら正常に起動出来ています。
しかし、これだけではコマンドの実装は何も出来ていないのでbot.pyを以下のように編集して挨拶を返してくれるようにしましょう。
from twitchio.ext import commands
from config import *
bot = commands.Bot(
irc_token=TMI_TOKEN,
client_id=CLIENT_ID,
nick=BOT_NICK,
prefix=BOT_PREFIX,
initial_channels=CHANNEL
)
@bot.event
async def event_ready():
print(f"{BOT_NICK}がオンラインになりました!")
# ここから追加
@bot.command(name='hello')
async def hello(ctx):
await ctx.channel.send(f'{ctx.author.name}さん こんにちは~ VoHiYo')
# ここまで追加
if __name__ == "__main__":
bot.run()
※追記 2020/09/28
#ここから追加
以下に関する説明を忘れてました。
@bot.command(name='hello') async def hello(ctx)
・・・!hello
コマンドを定義
ctx.channel.send('hogehoge~')
・・・!hello
コマンドが送信されたチャンネルでbotがhogehoge~
とコメントしてくれる
ctx.author.name
・・・コマンドを送信した人の名前
詳しいctx
の内容の説明は、twitchio.dataclasses.Contextをご覧ください
これでBotを起動した後に「!hello」と配信チャットを打つと「○○さん こんにちわ~ VoHiYo」とBotが発言してくれるようになります。
※ VoHiYoとはTwitchが絵文字として認識してくれる単語の一つです。
これで挨拶機能の実装、Botの運用に成功しました。
お疲れ様でした!
おわりに
現段階では挨拶の機能しかありませんが、勿論オリジナリティー溢れるコマンドを用意することもできます。
あなたのアイデア次第でBotは無限の可能性を秘めています。
是非公式ドキュメントとにらめっこしながらあなただけのBotを作ってみてください!
TwitchIOコミュニティーの繁栄を願っています
参考資料
Let's make a Twitch bot with Python!
TwitchIO(Github)
TwitchIO Document