11
10

More than 3 years have passed since last update.

TwitchIOでTwitchのBotを作る

Last updated at Posted at 2020-04-09

はじめに

TwitchのBotってPythonで作れるのかな~と調べていたところ日本語の記事が見つからず、英語アレルギーの自分には苦しい翻訳作業の連続だったので、僕と同じような英語アレルギーの人のお役に立てたらなと記事にして残しておきたいと思います。

TwitchIOというラッパーで簡単に作れるようなので、今回はこれを使用してBotを実際に作るところまで1から説明していきたいと思います。(エディタは省略)
原理まで書くととても長くなってしまうので機能を深く掘り下げるのはまた今度として、挨拶を返してくれるBotが完成するところまでです。面倒くさいわけでは決してありません(クソデカボイス)

この記事をきっかけに日本人ユーザーが増えてQiitaの記事も沢山出始めてくれたらな~と願っています。

また、間違った説明をしてしまっている箇所がありましたらコメントの方にお願いします:bow_tone1:

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でもやり方はほぼ変わりません。

手順

  1. Twitchアカウントの作成
  2. Pythonをインストール
  3. TwitchIOをインストール
  4. OAuthパスワードを作成
  5. Twitch Developersでアプリケーション登録
  6. コーディング
  7. 実践テスト

1. Twitchアカウントの作成

まずはBotとして扱うTwitchのアカウントを作成していきます。
そのアカウントそのものがBotとして動作するので、普段配信や視聴しているアカウントとは別で作成したほうがいいと思います。

今後Botを運用していく上で、Botが発言したことは無視するように設計しますので放送主のアカウントではBotを作らないようにして下さい。
そういう設計をしなかったとしてもちょっと寂しいBotになってしまいます。

image.png

https://www.twitch.tv/ を開いて右上の「登録」をクリックして下さい。
(既に普段使いのアカウントでログインしている場合はログアウトしてから)

image.png
アカウント情報を入力して「登録」をクリックしてください。
今回私はsalmon869という名前のBotを作成します。サーモンよりマグロの方が絶対おいしい

登録したメールアドレスの方にTwitchから6桁のアカウント認証コードが届いていると思うので、遷移した画面にそれを入力してください。
(Gmailだとプロモーションの所に届いていたので見つけづらいかもしれません...)
image.png

これにてアカウント登録は完了です。

この後、Twitch Developersにアプリケーション登録する際に2段階認証を済ませておく必要があるので、それを先にしておきましょう。

image.png

https://www.twitch.tv/settings/security こちらのページを開いて「セキュリティ」のところにある「2段階認証」の「2段階認証を設定する」というボタンをクリックして下さい。
image.png
左側は+81を選択し右側にお使いの携帯番号を入力して下さい。続行を押すと携帯の方に認証コードが記載されているSMSが届きます。
それを入力して認証完了です。

これでBotに使用するアカウントの準備は完了です。

2. Pythonをインストール

Githubには

TwitchIO requires Python 3.6 or higher.

と書いてありますので、最新版でも対応してるみたいです。
2020/04/09現在で最新のPython3.8.2をインストールします。
既に3.6より上のバージョンをインストールしている場合は次の「3. TwitchIOをインストール」に進んでも大丈夫です。

image.png
https://www.python.org/downloads/ を開いて「Download Python 3.8.2」をクリックして下さい。
ダウンロードされた「python-3.8.2.exe」を起動してください。
image.png
Add Python 3.8 to PATH」にチェックを入れた後、「Install Now」をクリックして下さい。

image.png
この画面になったら完了です。「Close」をクリックして閉じて大丈夫です。
これでPythonのインストールは完了です。

3. TwitchIOをインストール

TwitchIOをインストールするにはpipコマンドを使用します。
image.png
デスクトップ左下のWindowsマークをクリックし、「cmd」と入力すると「コマンドプロンプト」と検索結果に出ますのでクリックして下さい。
image.png
起動したら「py -m pip install twitchio」と入力してEnterキーを押して下さい。
色々バーっと出た後に「Successfully installed twitchio-1.0.0」と出たらインストール完了です。

4. OAuthパスワードを作成

TwitchのAPIを利用するためにはOAuthパスワードを取得する必要があります。
https://twitchapps.com/tmi/ このサイトでとても簡単に取得可能です。

image.png
Connect」をクリックして下さい。
image.png
許可」をクリックして下さい。
image.png
oauth:~」とパスワードが表示されるのでどこかにメモをしておいて下さい。
これでOAuthパスワードの作成は完了です。

5. Twitch Developersでアプリケーション登録

続いて、Twitch Developersでアプリケーション登録をしてクライアントIDを取得します。
https://dev.twitch.tv/console/apps/create を開いてください。
image.png
Authorize」をクリックして承認してください。
image.png
このような画面に遷移するのでそれぞれの項目を入力/選択してください。

  • 名前:Botのアカウント名(分かりやすければOK)
  • OAuthのリダイレクトURL:先ほどメモしたoauth:~
  • カテゴリー:Chat Botを選択

終わったら「作成」をクリックして下さい。

image.png
このような画面に遷移したら「管理」をクリックして下さい。
image.png
クライアントIDが記載されているのでそれをメモしておいてください。今回はシークレットトークンは使用しないので作成しなくて結構です。

これでTwitch Developersでアプリケーション登録は完了です。

6. コーディング

それでは実際にコーディングしていきましょう。

Twitch_botというフォルダを作成し、その中で作業していきます。
まずはデータを格納しておくconfig.pyを作成します。
以下は例ですので各々の情報を入力してください。

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を作成します。

Twitch_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. 実践テスト

入力が終わったら一度実行してみましょう。
image.png
Twitch_botフォルダを開いてShiftを押したまま右クリックして「PowerShellウィンドウをここで開く」でPowerShellを開いてください。機能としては大体コマンドプロンプトと同じです(大きいお友達のみんな、怒らないで)
image.png
起動したら「py bot.py」と入力しEnterキーを押してBotを起動してみましょう。
{Botのアカウント名}がオンラインになりました!」と表示されたら正常に起動出来ています。

しかし、これだけではコマンドの実装は何も出来ていないのでbot.pyを以下のように編集して挨拶を返してくれるようにしましょう。

Twitch_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が絵文字として認識してくれる単語の一つです。

実行結果で確認してみましょう。
image.png

これで挨拶機能の実装、Botの運用に成功しました。
お疲れ様でした!

おわりに

現段階では挨拶の機能しかありませんが、勿論オリジナリティー溢れるコマンドを用意することもできます。
あなたのアイデア次第でBotは無限の可能性を秘めています。
是非公式ドキュメントとにらめっこしながらあなただけのBotを作ってみてください!
TwitchIOコミュニティーの繁栄を願っています:wink:

参考資料

Let's make a Twitch bot with Python!
TwitchIO(Github)
TwitchIO Document

11
10
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
11
10