どうも音又です。
最近趣味で自分の運営しているDiscordサーバー用に自作したbotを入れているのですが、そのbotのステータス(例:〇〇をプレイ中)を自由なテキスト内容で表示したいなと思っていろいろ調べたので、今回はその備忘録として記事にしていきたいと思います。
discord.pyを使ったbotのステータス表示方法
そもそもdiscord.pyを使って自作botのステータスを表示させたい場合は
@client.event
async def on_ready():
await client.change_presence(status=discord.Status.online, activity=discord.Game('ここにゲームの名前'))
みたいな感じで記述することでステータスが表示されます。
この場合だとbotのステータス欄に「ここにゲームの名前 をプレイ中」と表示されるはずです。
他にも
activity = discord.Activity(name='ここに観ているもの', type=discord.ActivityType.watching)
await client.change_presence(status=discord.Status.online, activity=activity)
こんな感じで「discord.ActivityType」を使用してアクティビティを細かく指定してあげることもできます。
この場合だと「ここに観ているもの を視聴中」になります。
「〇〇を〇〇中」以外の内容で表示したい
では今回の本題。
ステータス欄に好きな内容を表示したい場合にはどうしたらいいか。
例えばbotのステータス欄に「botが動作しています」的なのを表示したい場合。
よく使われている方法だと先程のコードのゲーム名部分にそのまま表示させたい内容を書き込んじゃうパターン。
await client.change_presence(status=discord.Status.online, activity=discord.Game('botが動作しています'))
これで「botが動作しています をプレイ中」と表示されてそれっぽいことが出来ます。
でもこれだと「をプレイ中」が邪魔ですよね。
いや、別にそれでもいいんですけど性格上気になります()
そういった場合は「discord.CustomActivity」を使用します。
await client.change_presence(status=discord.Status.online, activity=discord.CustomActivity(name='botが動作しています'))
こう記述してあげることでステータス欄に「botが動作しています」とだけ表示されるようになります!
これで単にDiscordでありがちな「〇〇を〇〇中」というステータスにならずに好きなステータスを表示することが出来るようになります。
また複数サーバーで使用されているようなbotであれば
servers = len(client.guilds)
await client.change_presence(status=discord.Status.online, activity=discord.CustomActivity(name=f'導入されているサーバー数:{servers}'))
こう記述することで「導入されているサーバー数:1234」みたいな感じで表示させたりも出来ます。もちろん「を〇〇中」みたいなのはつきません。
こんな感じで使いようによってはいろんなことが出来そうです。
参考にしたところ
discord.pyの公式リファレンス。
これを参考にすると他にもいろいろ出来ます。
終わり
というわけでDiscordの自作botのステータスを好きな表示にする方法でした。
ステータス欄もbotの機能性や個性に繋がる部分かと思いますのでぜひ自分好みにカスタムしてみてください。
では今回はこの辺で。
コメント