DISCORDからAWS Cloud9を操作しBOT起動/停止する方法
こちらのnoteでは、仮想通貨のBOTの起動/停止をはじめ、AWS Cloud9のターミナル操作もDISCORDでまとめて行える環境構築の手順を解説します。
これで、外出先からでもスマホで簡単にBOT管理をすることが可能となります!
DISCORD対話型BOTの設定手順▼
1.DISCORDに独自サーバーを新規作成する
2.DISCORD DEVELOPER PORTALでAPPトークンを取得
3.DISCORD対話型BOTをCloud9に設定する
4.DISCORD対話型BOTを起動
では順番に説明していきます。
1.DISCORDに独自サーバーを新規作成する
DISCORDにログインし、左側の「+」ボタンをクリック
【Create a Server】をクリック
「サーバー名」に適当な名前を入力し【新規作成】をクリック
新規作成されると画面上部のようなエラーでることがあるので、Voice Channelsを削除しましょう
【カテゴリーを削除】をクリック
こうなります。
これで、1.の手順は完了です。
2.DISCORD DEVELOPER PORTALでAPPトークンを取得
次に、DISCORD DEVELOPER PORTALというサイトでトークンを取得し、自分のDISCORDサーバーとの接続を行います。
上のリンクに飛ぶと、以下のようなログイン画面が出ますのでDISCORDのEメールアドレス、パスワードを入力しログインしてください。
2段階認証設定済みの場合は入力してログイン
New Applicationをクリックします
適当な名前を入力し【Create】をクリック
こんな画面になります
左のSETTINGSをクリックし、画面右の【Add Bot】をクリック
【Yes, Do it!】をクリック
すると、画面中央に「TOKEN」という部分が出てるので、【Click to Reveal Token】かCOPYでトークンをコピーしておきます
このTOKENは後でpythonプログラムに設定するので、しっかりと管理しておいてください。また、このTOKENが漏れると、自分のCloud9の環境が操作されたりする危険性もあるため、厳重に保管してください。
次に、SETTINGSから「OAuth2」を選択し、SCOPESで「bot」を選択後、右下の【copy】を押してURLをコピーします
URLを直接ブラウザへ貼り付けてアクセスします
このような画面になりますので、
BOTを接続するために1.で作成したサーバーを選択して【認証】をクリック
認証されたら2.の手順は完了です。
3.DISCORD対話型BOTをCloud9に設定する
次に、Cloud9のインスタンスを起動し、DISCORD対話型BOTを設定していきます。
左側で右クリックし、【New File】をクリック
作成されたファイル名を変更します
次に、ターミナルで以下のコマンドを入力し【Enter】をクリック
chmod 775 discord_bot.py
コマンド入力し、
【Enter】クリックで実行権限付与される
以下のコマンドをターミナル入力しライブラリをインストールします
sudo pip-3.6 install discord
ライブラリがインストールされます
次にファイル名をダブルクリックして開き、以下のソースコードをコピー&ペーストで貼り付けます
# -*- coding: utf-8 -*-
import os
import time
from datetime import datetime
import sys
import subprocess
import discord
import pybitflyer
import pandas as pd
client = discord.Client() # 接続に使用するオブジェクト
TOKEN = ''
class bot_channnel:
def __init__(self):
self.process = None
self.bot_name = None
def start(self, message):
mgc = message.content
mgs = mgc.split(' ')
self.bot_name = mgs[1]
print('{} START'.format(mgs[1]))
time.sleep(1)
self.process = subprocess.Popen(['python3', mgs[1]])
return '{} START'.format(mgs[1])
def stop(self, message):
mgc = message.content
mgs = mgc.split(' ')
self.bot_name = mgs[1]
self.process.kill()
print('---------------------------------------------')
print()
print('{} STOP'.format(self.bot_name))
return '{} STOP'.format(self.bot_name)
bc = bot_channnel()
@client.event
async def on_ready():
print('CLOUD9 BOT AVAILABLE')
@client.event
async def on_message(message):
if message.content.startswith('0'):
cmd = message.content[1:]
process = (subprocess.Popen(cmd, stdout=subprocess.PIPE,
shell=True).communicate()[0]).decode('utf-8')
if process != '':
await client.send_message(message.channel, process)
if message.content.startswith('1'):
cmd = message.content[1:]
if 'start' in cmd:
await client.send_message(message.channel, bc.start(message))
if 'stop' in cmd:
await client.send_message(message.channel, bc.stop(message))
client.run(TOKEN)
次に、2.で取得したトークンをBOTに設定します。
13行目に
トークンを設定します
これで3.の手順は完了です。
4.DISCORD対話型BOTを起動
では、実際にDISCORD対話型BOTを起動してみましょう。
discord_bot.pyがアクティブの状態で【Run】をクリック
実行されると、以下のメッセージが実行タブに出力されます
次に、DISCORDの設定したサーバーを開いてみると、BOTがオンラインになっているのがわかります。
では、実際にBOTの機能を使ってみましょう。以下のようなことが行えるようになります。
DISCORD対話型BOTで使える機能▼
先頭に"0"をつける・・・先頭より後に入力したコマンドをターミナルで実行し、実行結果をDISCORDにログ出力する
先頭に"1"をつける・・・ START [botのファイル名] でBOT起動、STOP [botのファイル名] でBOT停止ができる
例として、DISCORDにターミナルで実行したいコマンドを打ってみます。
0pwd(pwdというコマンドで現在のディレクトリパスがわかる)
現在のディレクトリのパスがBOTから返ってきます
0ls(lsというコマンドで現在のディレクトリに含まれるディレクトリ・ファイルを一覧表示)
現在のディレクトリに含まれるディレクトリ・pythonプログラム、テキストファイルなどが返ってきます
他にもコマンドを入力すれば操作できますので、いろいろ知りたい場合は「UNIXコマンド」でぐぐってください。
次にBOTの起動・停止をしてみましょう。マーケットメイカーBOTを起動してみます
BOTの設定はこれです
ちゃんとBOTが起動して注文が出ています
最後にBOTを止めてみましょう
BOT停止しました。
以上となります。注意点として、インスタンスを【Never】で動かしっぱなしにすることと、discord_bot.pyは起動しっぱなしにしないと動きませんので、ご注意ください。
以上です。お疲れさまでした!!
この記事が気に入ったらサポートをしてみませんか?