とらのメモ

IT関係やガジェットについての雑記

DiscordのVCルームに参加している人にランダムで武器を配分させる

はじめに

splatoon2botを作成したときにVCルームに接続している人にランダム武器の機能を追加で実装したので、備忘録代わりに書いていこうと思います。先駆者の方がいたら申し訳ない。

ランダムに配布するものはcsvファイルで用意します 環境 Windows10 Python3.6

サンプルコード

※コピペ可

import discord
from random import randint,choice

def randBuki(buki_list, users):
    len_u = len(users)
    return {i:choice(buki_list) for i in users}
#clientオブジェクトの生成
client = discord.Client()
with open('buki.csv', encoding='UTF-8') as f:
    buki_list = f.readlines()

@client.event
async def on_message(message):
    #"random_buki"とチャットに入力があった場合反応
    '''ランダム武器'''
    if message.content.startswith('random_buki'):
        voice_channel = discord.utils.get(message.server.channels, id=message.author.voice.voice_channel.id)
        p_list = voice_channel.voice_members
        voice_users= [ p_list[i].display_name for i in range(len(p_list))]
        rand_buki = randBuki(buki_list,voice_users)
        mbuki = ''
        for i in rand_buki.keys():
            mbuki =  mbuki + '{}:{}'.format(i,rand_buki[i])
        msg = discord.Embed(title='ブキを決めるよ',description=mbuki, colour=0xffffff)
        await client.send_message(message.channel, embed=msg)

client.run("あなたのトーーーーーーーーーーーークン")
ひのきのぼう
てつのけん
えくすかりばー

普通に表示してもよかったのですが、なぜか人数分の通知を投げているみたいだったのでEmbedをつかってみました。 結構見やすくなったので結果オーライ

それではいいDiscordライフを