とらのメモ

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

DiscordのVCルームの入退室記録を取る

更新しました。

※注意: この記事に載っているコードは現在の最新バージョンのdiscord.pyでは動作しません。

下記の記事を参照してください↓↓

ikayome.hateblo.jp ライブラリの更新で使えなくなってたので更新。
あとこの記事がどこかのアフィカスに転載されてて笑ってしまった...

ボイスチャンネルの入退室の通知bot

on_voice_state_update(before, after)を使うとボイスチャンネルで変化があった時のデータを取れるので、これを使って通話部屋の入退室記録を取ります。 これで誰かが通話が開始した時に見逃すこともなくなると思います

ソース

import discord
import datetime

client = discord.Client()

@client.event
async def on_voice_state_update(before, after):
    if after.server.id == '監視するサーバーid':
        nowtime = datetime.datetime.utcnow()
        nowtime = nowtime + datetime.timedelta(hours=9)
        nowtime = nowtime.strftime("%m/%d-%H:%M")
        vcchannel = client.get_channel('通知させたいテキストチャンネルid')

        if(before.voice_channel is None):
            jointext=nowtime + "に "+ after.name + " が "+ after.voice_channel.name + " に参加しました。"
            await client.send_message(vcchannel, jointext)
        elif(after.voice_channel is None):
            outtext=nowtime + "に "+ before.name + " が "+ before.voice_channel.name + " から退出しました。"
            await client.send_message(vcchannel, outtext)

client.run("あなたのトークン")

サーバーidは指定しなくてもいいけど、複数サーバーに入ってるbotだとすべてのサーバーのボイスチャンネルの出入りを通知してしまうので注意。 では、また次の記事で

いいねを頂けると次の記事への励みになります(なくても書くけど)