Valorantが正式リリースされたわけですが、最初はどのキャラ使っていいかわからんと思うのでそういうときにてけとーに選んでくれるBOTをdiscordにぶちこんだ男の物語。ついでにOverwatchとApex Legendsにも対応してます。自分がやってるのOWだけやが。
コード
pythonは勘でいじってるからよくわからん。
[python title=”randompickkun.py” highlight=”6,9″]
import discord
import random
import copy
# アクセストークン
token = ‘TOKEN’
# 筋肉ID (クライアントID)
muscleID = ‘CID’
# キャラ一覧
CHARAS = {"V":["JETT", "PHOENIX", "RAZE", "SOVA", "BREACH", "BRIMSTONE", "OMEN", "VIPER", "SAGE", "CYPHER", "REYNA"],
"OWT":["DVA", "ウィンストン", "オリーサ", "ザリア", "シグマ", "ラインハルト", "レッキングボール", "ロードホッグ"],
"OWD":["エコー", "ゲンジ", "マクリー", "ファラ", "リーパー", "ソルジャー", "ソンブラ",
"トレーサー", "ドゥームフィスト", "バスティオン", "ハンゾー", "ジャンクラット",
"メイ", "トールビョーン", "ウィドウメイカー", "シンメトラ", "アッシュ"],
"OWS":["アナ", "ルシオ", "マーシー", "ゼニヤッタ", "モイラ", "ブリギッテ", "バティスト"],
"OW":[],
"A":["ブラッドハウンド", "ジブラルタル", "ライフライン", "パスファインダー", "レイス", "バンガロール",
"コースティック", "ミラージュ", "オクタン", "ワットソン", "クリプト", "レヴナント", "ローバ"]}
OW_ALL = copy.deepcopy(CHARAS["OWT"])
OW_ALL.extend(copy.deepcopy(CHARAS["OWD"]))
OW_ALL.extend(copy.deepcopy(CHARAS["OWS"]))
CHARAS["OW"] = OW_ALL
help_msg = ”’キャラをランダムで選んでくれるBOTです。
使えるゲームはいまのところV(valorant)、A(apex)、OW(おばお全キャラ)、OWT(おばおタンク)、OWD(おばおダメージ)、OWS(おばおサポ)。
使用例は
@ゲームキャラランダムピックくん V ktm@s nk.
LISTで全キャラ出力します。キャラ足りなかったら管理者までお知らせを。
”’
muscleID += ‘>’
print("RANDOM PICK")
# クライアント生成
client = discord.Client()
# メッセージ受信時
@client.event
async def on_message(message):
# メッセージ送信者がBotだった場合は無視する
if message.author.bot:
return
# メンションかどうか
if client.user in message.mentions:
# for debug
# print(message.content)
# スペース区切りで配列に代入
text = message.content.split()
# text[0]が当該BOTじゃないなら終わり
if not muscleID in text[0] or text[0].find(‘<@’) == -1: # <@始まりでマッスルID終わりでなければ
return
if len(text) == 2 and text[1] == "LIST":
msg = ""
for L in CHARAS:
msg += L+": "+ ", ".join(CHARAS[L]) + "\n"
await message.channel.send(msg)
return
if len(text) < 3:
await message.channel.send(help_msg)
return
# 最初のメンション部分が不要なので[0]をカットして入れなおす
text = text[1:]
# ゲーム指定
game = text[0]
if not game in CHARAS:
await message.channel.send(game+"は不明なゲームでやんす")
return
CHARA_LIST = copy.deepcopy(CHARAS[game])
text = text[1:]
# 重複削除
text = sorted(list(set(text)),key=text.index)
if len(text) > len(CHARA_LIST):
await message.channel.send("キャラより人数多すぎ")
return
msg = ""
for UNAME in text:
GETCHARA = random.choice(CHARA_LIST)
CHARA_LIST.remove(GETCHARA)
msg += UNAME+"は"+GETCHARA+"を、"
msg += "使うのです"
# メッセージ送信
await message.channel.send(msg)
# Botの起動とDiscordサーバーへの接続
client.run(token)
[/python]
導入方法
pythonインスコ
debianにpython3入れようとしたら一生エラー出て久々にキレたのでWindowsにpython入れた。
とりあえずPython 3.8.3のページ下部にあるインストーラーを使って適当にインストール。いまの時代、ActivePythonじゃなくて公式がインストーラー出してるんすごい時代やね。
discord.py入れる
discordのBOT用のライブラリであるdiscord.pyを導入する。
DiscordでBOTを機能させるまでの手順を参考に、コマンドプロンプト使って
[code language=”powershell”]
python -m pip install -U discord.py
[/code]
で行けた。
BOT登録
DiscordでBOTを機能させるまでの手順見て。
TOKENとクライアントIDをメモっておく。
BOTへんしゅー
上記コード6行目と9行目のTOKENとCIDを書き換える。あとはBOT起動して動作確認しておわり。
コメント