【Discord.py】Botのステータスメッセージを更新できるようにする

Discord.pyでBotのステータスメッセージ(以下ステメ)を数秒おきに変える方法を書き綴ります。

タイプ1:ログイン後ずっと更新し続ける

有名なBotでもよく使用されるタイプです。たいていの場合、現在参加中のサーバー数やヘルプコマンド、サポートサーバーなどが表示されます。

import asyncio
import discord
from random import randrange as rr
activity = discord.Activity(name="起動中…", type=discord.ActivityType.playing)
client = discord.Client(activity=activity)
@client.event
async def on_ready():
   print("Login completed")
   print('------')
   while True:
       await client.change_presence(activity = discord.Activity(name="Help:!help", type=discord.ActivityType.playing))
       await asyncio.sleep(15)
       joinserver=len(client.guilds)
       servers=str(joinserver)
       await client.change_presence(activity = discord.Activity(name="サーバー数:"+servers, type=discord.ActivityType.playing))
       await asyncio.sleep(15)
       await client.change_presence(activity = discord.Activity(name="乱数:"+str(rr(0,101)), type=discord.ActivityType.playing))
       await asyncio.sleep(15)

client.run("token")

asyncio.sleep()の数値がステメ更新間隔になります。
この場合は15秒間隔で更新されますが、randomを用いて不定期にしてみたり、大事な部分を長く表示してみたり、アイデア次第で様々な工夫ができます。

タイプ2:コマンドを打つと更新する

このタイプはどちらかというと製作者の方が使用するものになります。
例えば、製作者からのお知らせをステメを用いて配信する際にはこのタイプが便利です。

@client.event
async def on_message(message):
   if message.content.startswith("!st "):
       if client.user!=message.author:
           stmsg=message.content[4:]
           await client.change_presence(activity = discord.Activity(name=str(stmsg), type=discord.ActivityType.playing))

!st ステメ変えてみた
というコマンドを実行すると、Botのステメが「ステメ変えてみた」となります。
ただ、全員が実行できてしまうと悪用される可能性もあるので、基本的には管理者限定コマンドにすると良いでしょう。


アイデアが浮かばなかったので2種類のみの紹介でしたが、まだまだ可能性がたくさんあります。せっかくステメを表示するなら、ぜひ定期的に変えてみて他のBotと差をつけましょう!!

いいなと思ったら応援しよう!