スポンサーリンク

【Discord Bot】MK8DXのチームランクボットを作ってみました!(招待リンクつき)

Discord Bot

こんにちは!そーすけです!

今回は最近サービスが終わってしまったチームランクボットを作ってみようと思います!
最後にはこちらのbotの招待リンクも用意していますのでみていってくださいね!

みなさんマリオカートのチームでチームランクボットというものを使っていましたか?
.trmのコマンドでチームのランクを調べれられるものでした!

ですが先日このbotはサービスが終了してしまいましたね泣

ちょうど先日チームランク表も更新されたので今回は僕が1から自作してみようと思います!

スポンサーリンク
スポンサーリンク

Botを用意する!

こちらを完全に参考にしているのでもし興味があればみてみてください!

こんな感じのものを用意しました!

スポンサーリンク

環境を用意する

言語はPythonでサーバーはHerokuでgithubを使用してデプロイしていこうと思います!

まず、フォルダを用意します!名前はなんでもいいです!
そしたらその空のフォルダにvscodeでアクセスしてください!

vscodeを導入していない方はこちらの記事を参考にしてみてください!

次にPythonが入っているか確認します!

vscodeのコマンドプロンプト・ターミナルで以下を実行します!

discordbot-teamrank % python --version

#このように帰って来ればok
Python oo.oo.o

次にdiscord.pyの導入です!(macの場合)以下のコマンドでライブラリを入れることができます!

discordbot-teamrank % python3 -m pip install -U "discord.py[voice]"

次は実際にコードを書いていきます!

スポンサーリンク

main.pyを作成

vscodeでこちらのコードを作成しました!

# インストールした discord.py を読み込む
import discord
import re

# 自分のBotのアクセストークンに置き換えてください
TOKEN = 'botのアクセストークン'

# 接続に必要なオブジェクトを生成
client = discord.Client()

# 起動時に動作する処理
@client.event
async def on_ready():
    # 起動したらターミナルにログイン通知が表示される
    print('ログインしました')


##新チームランクのデータを書き込む
teamranklist = {
    "SS" : ["NX", "γ", "RiZE"],
    "S" : ["おれんじ", "GK"],
    "A" : ["ARKER", "KRT", "NR", "Ray"],
    "B" : ["A'F", "Amb", "Cv", "FV", "Gw", "GzK", "JSKS", "KSR", "Marf", "NvK", "Shy", "Swat", "w'nd", "ZERO", "tlftc"],
    "C" : ["AHW","Air","BVB","Caf","DZW","Eins","FGR","Fun","ISK","IXA","MNG","MtG","Mx0","MZE","OO","OSR","Phantom","PK","QwQ","Riev","Rnm","sf","SFH","Sy","Tryve","Xan","zaru","7st","EX","ALYY"],
    "D" : ["Abyss","Adv","ApX","Ash","BP","Code","ET","FJI","Frp","GL","GTO","HhI","10","Jr","KL","LDH","LM","Lv","NFs","pf","Rainbow","Ro","STDStN","Spica","TRB","UPD","WING","XCR","あずあんびにゃんぱす","サムライ","360"],
    "E" : ["AFC","aristole","Azu","Bijou","BKN","Cp","crescent","Cry","DFF","EDN","Gns","Go","Gyof","HiG","HK","KDL","LA","LPT","Luna","MOR","MS","Mtv","MYT","Niz","NKW","NRK","Osn","Per","PPK","RaD","SHR","Sna","Syn","SVN","Sxt","TIJ","TKY","URS","VC","Vel","VX","XYZ","YU","アフロ","ポインコ"],
    "F" : ["Aps","ARC","Atb","CeX","Disney","dope","Dvt","D&P","GGY","HaM","IKT","JRA","KM","KTY","KU","KZ","LP9","Lr","Ly","Mef","Muk","Niev","NMC","Nuts","OML","PGO","PHJ","PN","ReX","RF","Rose","SSK","Sxt","SV","TRK","UNI","u's","ZK","ZM"],
    "G" : ["AFE","ALC","Art","GrL","IL","Lis","MR","RSK","SKT","Sla","UHF","YUR"],
}

##チームランクを調べてくれる関数
def teamrank_search(team):
    if team in teamranklist["SS"]:
        return "rank SS です"
    
    if team in teamranklist["S"]:
        return "rank S です"
    
    if team in teamranklist["A"]:
        return "rank A です"
    
    if team in teamranklist["B"]:
        return "rank B です"
    
    if team in teamranklist["C"]:
        return "rank C です"
    
    if team in teamranklist["D"]:
        return "rank D です"
    
    if team in teamranklist["E"]:
        return "rank E です"
    
    if team in teamranklist["F"]:
        return "rank F です"
            
    if team in teamranklist["G"]:
        return "rank G です"
    
    return "ランク外 です"
    

#メッセージ受信時に動作する処理
@client.event
async def on_message(message):
    # メッセージ送信者がBotだった場合は無視する
    if message.author.bot:
        return
 # 「/trm」と発言したら検索処理
    pattern = re.compile(".trm")
    if pattern.search(message.content):
        #送られてきたメッセージをいい感じに整形
        input = message.content.split()
        team = input[1]
        ##teamrank_search関数を実行し、結果をbotが返信してくれる
        await message.channel.send(teamrank_search(team))
    
        

# Botの起動とDiscordサーバーへの接続
client.run(TOKEN)

ここまでできたら実際にターミナルで以下のコマンドを実行するとローカルで動かすことができます。

python3 main.py

こんな感じで動きました!

スポンサーリンク

Herokuにデプロイ!

あとは実際にサーバーにデプロイして常時動かすようにします!

デプロイするためには以下のファイルが必要になりますので用意します!

discordbot: python main.py
aiohttp==3.7.4.post0
async-timeout==3.0.1
attrs==21.4.0
autopep8==1.6.0
cachetools==5.0.0
certifi==2021.10.8
cffi==1.15.0
chardet==4.0.0
charset-normalizer==2.0.12
click==8.1.3
DateTime==4.4
discord.py==1.7.3
Flask==2.1.2
future==0.18.2
google-auth==2.6.0
google-auth-oauthlib==0.5.0
greenlet==1.1.2
gspread==5.2.0
gunicorn==20.1.0
httplib2==0.20.4
idna==3.3
importlib-metadata==4.11.3
itsdangerous==2.1.2
Jinja2==3.1.2
line-bot-sdk==2.2.1
MarkupSafe==2.1.1
multidict==6.0.2
numpy==1.22.3
oauth2client==4.1.3
oauthlib==3.2.0
pandas==1.4.2
psycopg2==2.9.3
pyasn1==0.4.8
pyasn1-modules==0.2.8
pycodestyle==2.8.0
pycparser==2.21
PyNaCl==1.4.0
pyparsing==3.0.7
python-dateutil==2.8.2
pytz==2022.1
requests==2.27.1
requests-oauthlib==1.3.1
rsa==4.8
six==1.15.0
SQLAlchemy==1.4.36
toml==0.10.2
tweepy==4.9.0
typing_extensions==4.1.1
urllib3==1.26.8
Werkzeug==2.1.2
yarl==1.7.2
zipp==3.8.0
zope.interface==5.4.0
python-3.9.13

これらが用意できたらターミナルで以下を順番に実行していきます

discordbot-teamrank % git init
discordbot-teamrank % git add . 
discordbot-teamrank % git commit -m "初めてのcommit"

その後にgit hubデスクトップでリモートリポジトリにコードを入れます!

方法はいろいろありますがこんな感じになってればokです!

この後はこの手順に沿ってherokuでgithubと連携を行いデプロイします。

ここまでできてbotがオンラインであれば実際に動作しています!

スポンサーリンク

team rank bot by so を招待したい方へ

下記のリンクからサーバーに招待することができるのでぜひ招待してみてご自由にご使用ください!

現在招待リンクが100サーバーを超えてしまい、切れてしまっています。
承認取得しようとしていますので可能になりましたらまた告知させていただきます
🙇

今後もマリカの記事だけではなくbot系の記事も書いていきますので気になったかはなったかたは是非見てください

お疲れ様でした〜

コメント

  1. Garland より:

    I constantly spemt my half an hopur to rad this webpage’s posts alll
    thee time along with a cup of coffee.