OverwatchとかApex LegendsとかValorantでキャラ選ぶのがめんどい人がBOT@Discordに選ばせようとしたやつ

Python

記事をご覧の方へ

現在vivibit.netは旧システムからの移行に伴い修正作業を行っています。
表示上の問題や軽微なエラーが発生する可能性がありますが、ご利用に問題はありません。
また、現在一部ファイルのダウンロードができなくなっています。
順次対応予定ですが、お急ぎの場合や問題を発見された場合はコメント欄でご指摘いただけると助かります。


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起動して動作確認しておわり。

コメント

タイトルとURLをコピーしました