Bot 機能(モジュール)

レベリング(XP・レベル)

レベリングは、メンバーがサーバーで発言するたびに XP(経験値)を付与し、たまった XP に応じてレベルが上がっていく仕組みです。レベルが上がると自動でロールを付与したり、お祝いのメッセージを送ったりできます。

さらに、特定のロールやチャンネルでの発言に XP ボーナスを付ける「XPブースト」、XP の対象にするチャンネルを絞り込むホワイト/ブラックリスト、レベルの計算式やレベルごとに必要な XP の調整など、サーバーごとに細かくカスタマイズできます。

レベリングはプレミアム限定の機能ですが、ベータ版のあいだは全ユーザーに無料で提供されます(ベータ終了後はプレミアム限定になる予定です)。ダッシュボードのメニューでは「メッセージ」グループの中に「レベルリング」と表示されます(本ドキュメントでは「レベリング」と表記します)。

このページでできること

  • サーバーごとにレベリングを有効にし、XP の計算式・付与量・クールダウン・上限レベルを設定する
  • XP の対象にするチャンネル(ホワイト/ブラックリスト)と、ロール・チャンネルごとの XP ボーナス(%)を設定する
  • レベル到達時に付与するロールと通知メッセージ、ランクカード・リーダーボードの表示形式を設定する
  • レベリングコマンド(「/level rank」「/level leaderboard」「/level edit-xp」「/level reset-leaderboard」)の有効・無効と権限を設定する

レベリングの設定は「サーバーごと」に管理します。1 つの Bot で複数のサーバーを管理している場合、それぞれのサーバーに対して別々の設定を作成できます。

レベリングページを開く

対象の Bot を開き、メニューの「メッセージ」グループから「レベルリング」を選び、「機能の有効化」をオンにします。メニューに「Premium」と表示されていても、ベータ版のあいだはそのまま開いて利用できます。

コマンド権限設定

「コマンド権限設定」セクションでは、レベリングに関する 4 つのコマンドについて、それぞれ使えるかどうか・誰が使えるかを設定できます。

コマンド説明
「/level edit-xp」管理者がユーザーの XP を編集します。
「/level reset-leaderboard」リーダーボードをリセットします。
「/level leaderboard」リーダーボードを表示します。
「/level rank」自分のランクと XP を表示します。

各コマンドの行では「コマンドを有効化」「個別権限設定を有効化」「Discord権限より個別設定を優先」を設定できます。操作方法は全機能で共通のため、くわしくはコマンド権限設定の使い方をご覧ください。

サーバー別レベリング設定

「サーバー別レベリング設定」セクションで、各サーバーの XP・レベル・報酬・ブーストを設定します。

対象サーバーを追加する

「新しいサーバー設定を追加」をクリックする

「新しいサーバー設定を追加」でサーバーを選ぶフォームが開きます。

「対象サーバー」を選ぶ

「対象サーバー」の欄で、設定したいサーバーを選択します。

「追加」をクリックする

そのサーバーの設定が一覧に追加されます。同じサーバーの設定を重複して追加することはできません。

サーバーごとの設定を開く

一覧の行を開き、「レベリング機能を有効化」をオンにすると、そのサーバーで XP・レベルシステムが有効になり、以下の詳細設定項目が表示されます。オフのあいだは詳細設定は表示されません。

不要になったサーバー設定は「削除」で取り除けます。

基本設定(XP とレベルの計算)

設定項目内容初期値
「埋め込みカラー」レベリングが送る埋め込みメッセージの色。先頭に # が表示され、# を除いた 16 進数のカラーコードを入力します。#5865F2
「最大レベル」到達できる上限のレベル。1 以上 1000 以下の整数で指定します。50
「XP計算式タイプ」レベルアップに必要な XP の増え方。「算術 (増分加算)」と「指数」から選びます。算術 (増分加算)
「基本必要XP」最初のレベルアップに必要な XP の基準値です。100
「レベルごとの追加必要XP」レベルが上がるごとに、必要 XP に上乗せされる量です。50

XP計算式タイプについて

  • 算術 (増分加算): レベルが上がるごとに、必要 XP が一定量ずつ加算されていく方式です。「基本必要XP」をスタート地点に、「レベルごとの追加必要XP」が段階的に加わっていきます。緩やかに必要量が増えていきます。
  • 指数: レベルが上がるほど必要 XP が大きく増えていく方式です。高レベルになるほどレベルアップが難しくなります。

XP付与設定(1メッセージあたりの XP とクールダウン)

発言 1 回ごとにどれだけ XP を付与するか、また連投を防ぐためのクールダウンを設定します。

設定項目内容初期値
「メッセージあたり最小XP」1 メッセージで付与される XP の下限です(整数、1 以上)。5
「メッセージあたり最大XP」1 メッセージで付与される XP の上限です(整数、1 以上)。15
「クールダウン (秒)」一度 XP を付与してから、次に付与するまでの待ち時間(秒)です。短時間の連投で XP が稼げないようにします(整数、0 以上)。10

挙動(退出時のデータ・レベルアップ通知)

サーバー単位の動作を、2 つのスイッチで切り替えます。

スイッチ内容初期状態
「退出時にデータをクリア」メンバーがサーバーを退出した際に、そのユーザーの XP・レベルデータを削除します。オフ
「レベルアップ時にメッセージを送信」レベルアップ時に通知メッセージを送信します。オン

「退出時にデータをクリア」をオンにすると、メンバーが退出・キックされた時点でそのユーザーの XP・レベル・進捗が削除されます。再参加してもデータは戻らず、レベル 1・XP 0 からの再スタートになります。元に戻すことはできません。

対象制御(管理者ロール・チャンネルの絞り込み)

XP を付与する対象や、コマンドの管理権限を持つロールを指定します。

設定項目内容
「管理者ロール」「/level edit-xp」や「/level reset-leaderboard」を使える権限を持つロールです。
「ホワイトリストチャンネル」設定すると、ここに含まれるチャンネルでの発言のみが XP の対象になります。空のままなら無効です。
「ブラックリストチャンネル」ここに含まれるチャンネルは XP の対象外になります。

XPブースト(ロール・チャンネルごとのボーナス)

「XPブースト」では、特定のロールやチャンネルでの発言に XP のボーナス(%)を加算できます。ロール単位・チャンネル単位で XP 倍率を % 加算し、複数に一致する発言ではボーナスが合算されます。

設定欄は「ロール毎に追加」と「チャンネル毎に追加」の 2 つに分かれていますが、操作はどちらも同じです。

行を追加する

「ロール追加」または「チャンネル追加」をクリックします。

対象とボーナス%を設定する

追加された行で、ボーナスを付けたいロールまたはチャンネルを選び、ボーナスの割合(%)を入力します(0〜500 の整数)。不要な行は削除できます。

レベル報酬(到達時のロール付与と通知)

「レベル報酬」では、特定のレベルに到達したときに付与するロールと、送信する通知メッセージを設定できます(レベル到達時にロール付与+メッセージ送信)。

報酬を追加する

「報酬を追加」で報酬の設定枠が 1 つ増えます。不要になった枠は「削除」で取り除けます。

「レベル」を指定する

枠の上部にある「レベル」欄で、この報酬を発動させるレベルを入力します(1 以上の整数)。

「付与ロール」を選ぶ

「付与ロール」でロールを選んで「追加」すると、そのレベル到達時に付与されるロールとして登録されます。複数のロールを追加できます。

通知メッセージを作成する

メッセージ作成エリアで、レベル到達時に送る通知メッセージを編集します。「メッセージ内容 (Content)」の本文に加えて、埋め込み(タイトル・説明・カラー・画像など)も設定できます。

通知メッセージの本文や埋め込みでは、{Leveling.Level}(到達したレベル)、{USER_NAME}(ユーザー名)、{USER_MENTION}(ユーザーへのメンション)などの変数を差し込めます。くわしくはコマンド内での変数の使い方をご覧ください。

設定を保存する

設定を変更すると画面下部にバーが表示されます。「保存」で変更が反映され、「破棄」で変更を取り消します。保存するまで変更は反映されません。保存の詳細はモジュールの基本と共通操作をご覧ください。

実際の動作と既定値

XP が付与される流れ

メンバーがサーバーで発言するたびに、Bot は次の条件をすべて満たす場合に XP を付与します。

  • そのサーバーでレベリングが有効になっている
  • 発言したのが Bot ではなく通常のメンバーである
  • 発言したチャンネルがブラックリストに含まれていない(ブラックリストを設定している場合)
  • ホワイトリストを設定している場合は、発言したチャンネルがホワイトリストに含まれている
  • 前回 XP を獲得してからクールダウン(初期値 10 秒)が経過している

これらを満たすと、「メッセージあたり最小XP」〜「メッセージあたり最大XP」(初期値 515)の範囲からランダムに XP が付与されます。

クールダウンはメンバーごと・サーバーごとに管理されます。同じユーザーが別のサーバーで発言した場合は、それぞれ独立してクールダウンが計算されます。

XPブーストの加算ルール

ロールブーストとチャンネルブーストは加算(合算)で効きます。たとえば +50% のロールブーストと +20% のチャンネルブーストの両方に当てはまる発言では、合計 +70% のボーナスが付きます。ボーナスは発言ごとに、その時点でメンバーが持っているロールと、発言したチャンネルをもとに計算されます。

レベルアップ時の動作

たまった XP が次のレベルに必要な量に達すると、レベルが 1 つ上がり、次のレベルに向けた進捗がリセットされます。レベルアップ時には次のことが起こります。

  • そのレベルに報酬ロールを設定していれば、自動でメンバーにロールが付与されます
  • 「レベルアップ時にメッセージを送信」がオンであれば、発言があったチャンネルに通知メッセージ(埋め込み)が送信されます

1 回の発言で大量の XP が入った場合や、必要 XP を低く設定している場合は、1 回の発言で複数レベルまとめて上がることもあります。

上限とクールダウン

設定で変更できる最大レベル(初期値 50 / 11000)、1 メッセージあたりの XP(初期値 515)、クールダウン(初期値 10 秒 / 0 以上)は「基本設定」「XP付与設定」の表を参照してください。変更できない値は次のとおりです。

項目内容
リーダーボード表示数「/level leaderboard」で表示される人数。上位 10 人で固定
報酬ロールの数1 つのレベルに割り当てられるロールの数。上限なし(複数指定可)

最大レベルに到達したメンバーは、それ以上発言しても XP による進捗が増えなくなり、進捗は 0 のまま据え置かれます。「/level rank」では、必要 XP の代わりに到達済みである旨が表示されます。

表示されるメッセージ

レベリングのコマンドやレベルアップ時に Bot が表示する主なメッセージは次のとおりです。文中の { } で囲まれた部分は、実際には数値や進捗に置き換わって表示されます。

ランク表示(/level rank)

「/level rank」を実行すると、🏅 レベリングランク というタイトルの埋め込みが表示され、ユーザー・ランク(サーバー内の順位)・レベル・累計 XP・次のレベルまでの情報が並びます。

  • 次のレベルがある場合: 次の必要XP: {remaining:,}(進捗 {percent}%)({remaining:,} は残り XP、{percent} は進捗の割合)
  • 最大レベルに到達している場合: 次のレベル: 到達済み

「/level rank」の出力形式は、埋め込み(embed)と画像(ランクカード)から選べます。詳しくはランクカードの表示形式とスタイルをご覧ください。

リーダーボード(/level leaderboard)

「/level leaderboard」を実行すると、🏆 レベリングランキング (上位10) [max Lv.50] というタイトルの埋め込みに、レベルの高い順(同じレベルなら累計 XP の多い順)で上位 10 人が番号付きで表示されます。まだ誰も XP を獲得していない場合は次のように表示されます。

ランキングデータがありません。

「/level leaderboard」の出力形式も、埋め込みと画像(カード)から選べます。詳しくはリーダーボードの表示形式とスタイルをご覧ください。

XP 編集(/level edit-xp)

管理者が「/level edit-xp」でメンバーの累計 XP を設定すると、本人だけに見える確認用の埋め込みで、対象ユーザー・更新後の XP・新しいレベルが表示されます。指定した XP に応じてレベルと進捗は再計算され、そのレベルまでの報酬ロールも付与されます。

リーダーボードのリセット(/level reset-leaderboard)

管理者が「/level reset-leaderboard」を実行すると、サーバー内の全メンバーの XP・レベルが削除され、本人だけに見える確認メッセージ 🗑️ リーダーボードリセットユーザー進捗(XP/レベル)を削除しました。ロール報酬は解除されません。 と案内されます。

権限・利用場所に関するメッセージ

  • 管理コマンドを権限のないメンバーが実行した場合: 権限がありません。
  • コマンドをサーバー外(DM など)で実行した場合: ギルド内でのみ使用できます。

ランクカードの表示形式とスタイル

「/level rank」の出力は、埋め込み(embed)画像(ランクカード) のどちらかを選べます。画像を選ぶと、レベル・ランク・累計 XP・進捗バーなどをまとめたカード画像が生成されます。

ランクカードには次のスタイルが用意されています。

スタイル内容
「rich」グラデーションにバッジと光彩を重ねた、装飾の多い既定スタイルです。
「minimal」装飾を抑えたフラットでシンプルなスタイルです。
「neon」発光を効かせたサイバー調のスタイルです。

ユーザーのアバターはカードに自動で取得され、画像内に表示されます。生成されるカード画像(ランクカード・リーダーボードカード・レベルアップカード)には「Made with botshade.com」の透かしが入ります。

リーダーボードの表示形式とスタイル

「/level leaderboard」の出力も、埋め込み(embed)画像(カード) から選べます。画像を選ぶと、上位メンバーをまとめたランキングカード画像が生成されます。

スタイルは、ランクカードと同じ「rich」「minimal」「neon」に加えて、上位 3 名を表彰台風に大きく配置する「podium」を選べます。各メンバーのアバターはカードに自動で取得されます。

レベルアップ通知の設定(/level setting)

レベルアップしたときの通知は、「/level setting」を実行して開く設定パネル(Discord 上の UI)から細かく調整できます。通知の有無・送信先・形式を、このパネルで切り替えます。

設定項目内容
通知の有無レベルアップ通知をまとめてオン・オフするマスタースイッチです。オフにすると、以降のレベルアップで通知は送られません。
送信先通知をどこに送るかを選びます(下表)。
通知の形式通知をどの形で送るかを選びます(下表)。

送信先

送信先内容
「レベルアップが起きたチャンネル」(current)レベルアップのきっかけになった発言があったチャンネルに通知します。
「指定チャンネル」(channel)あらかじめ指定した 1 つのチャンネルに通知をまとめます。これを選んだ場合は送信先チャンネルを指定します。
「DM」レベルアップしたメンバー本人にダイレクトメッセージで通知します。

通知の形式

形式内容
「テキスト」(message)本文だけのテキストメッセージで通知します。
「埋め込み」(embed)埋め込みメッセージで通知します。
「画像」(レベルアップカード)レベルアップカードの画像で通知します。

メッセージのカスタマイズと変数

ランク表示・リーダーボード・レベルアップ通知のメッセージ内容や埋め込みは、変数を使って自由にカスタマイズできます。

対象カスタマイズできるもの
ランク表示(rankMessage)「/level rank」で表示するメッセージ内容・埋め込み
リーダーボード(leaderboardMessage)「/level leaderboard」で表示するメッセージ内容・埋め込み
レベルアップ通知(levelupMessage)レベルアップ時に送る通知のメッセージ内容・埋め込み

埋め込みのカラーも 16 進数のカラーコードで指定できます(既定 #5865F2)。空欄のままにしたテンプレートは既定表示になるため、カスタマイズしたいものだけ入力すれば十分です。

使える Leveling 名前空間の変数

メッセージや埋め込みでは、{Leveling.xxx} の形式(lowerCamelCase)で次の変数を差し込めます。

変数内容
{Leveling.level}現在のレベル
{Leveling.maxLevel}レベルの上限
{Leveling.rank}サーバー内の順位
{Leveling.totalXp}累計 XP
{Leveling.currentXp}現在のレベル内での進捗 XP
{Leveling.requiredXp}次のレベルに必要な XP
{Leveling.remainingXp}次のレベルまで残りの XP
{Leveling.percent}進捗率(0〜100)
{Leveling.displayName}表示名
{Leveling.rows}上位メンバーの一覧を行として展開します(leaderboardMessage のテンプレート専用)

{Leveling.*} のほかに、{User.*}{Guild.*} といった共通の変数も併用できます。使える変数の一覧と使い方は変数の概要をご覧ください。

注意点・うまくいかないとき

報酬ロールは「付与」だけが自動で行われ、外す処理は行われません。「/level edit-xp」で XP を下げたり「/level reset-leaderboard」でリセットしたりしても、過去に付与したロールはそのまま残ります。ロールを外したい場合は手動で行ってください。

  • 報酬ロールが付かない: Bot にロールを付与する権限がない、または対象ロールが Bot のロールより上位にある場合、付与は静かに失敗します(エラーメッセージは表示されません)。報酬に使うロールが削除されている場合も同様です。Bot のロール順位とロール管理権限をご確認ください。
  • ホワイトリストとブラックリストの優先順位: ホワイトリストチャンネルを 1 つでも設定すると、ブラックリストの指定は無視され、ホワイトリストに含まれるチャンネルだけが XP の対象になります。
  • 最大レベルに達すると進捗が止まる: 最大レベルに到達したメンバーは、以降の発言で XP による進捗が増えません。さらにレベルを上げたい場合は「最大レベル」を引き上げてください。
  • リーダーボードがすぐ反映されないことがある: リーダーボードは表示専用に最適化されているため、短時間に発言が集中したときなどはわずかに表示が遅れる場合があります。
  • レベルアップ通知をオフにしてもロールは付く: 「レベルアップ時にメッセージを送信」をオフにすると通知メッセージは送られませんが、報酬ロールの付与は引き続き行われます。

コマンド一覧

レベリングで使えるスラッシュコマンドは次のとおりです。各コマンドの有効・無効や権限は、ページ上部の「コマンド権限設定」で調整できます。

コマンド内容使える人表示
/level rank [user] [ephemeral]指定ユーザー(省略時は自分)のレベル・ランク・累計 XP・次のレベルまでの進捗を表示します。サーバーの全メンバー既定は全員に公開。ephemeral1 にすると自分だけに表示
/level leaderboard [ephemeral]レベルの高い順に上位 10 人を表示します。サーバーの全メンバー既定は全員に公開。ephemeral1 にすると自分だけに表示
/level edit-xp <user> <total_xp>指定メンバーの累計 XP を手動で設定し、レベルと進捗を再計算します。管理者(後述の権限を持つ人)本人だけに表示
/level reset-leaderboardサーバー内の全メンバーの XP・レベルを削除します(報酬ロールは外れません)。管理者(後述の権限を持つ人)本人だけに表示
/level settingレベルアップ通知の設定パネル(通知の有無・送信先・形式)を開きます。管理者(後述の権限を持つ人)本人だけに表示

管理コマンド(「/level edit-xp」「/level reset-leaderboard」「/level setting」)は、次のいずれかに当てはまるメンバーだけが実行できます。

  • Discord の「管理者(Administrator)」権限を持っている
  • Discord の「サーバー管理(Manage Server)」権限を持っている
  • 「管理者ロール」に設定したロールを持っている

次のステップ / 関連ページ

最終更新:

目次

このページでできることレベリングページを開くコマンド権限設定サーバー別レベリング設定対象サーバーを追加する「新しいサーバー設定を追加」をクリックする「対象サーバー」を選ぶ「追加」をクリックするサーバーごとの設定を開く基本設定(XP とレベルの計算)XP計算式タイプについてXP付与設定(1メッセージあたりの XP とクールダウン)挙動(退出時のデータ・レベルアップ通知)対象制御(管理者ロール・チャンネルの絞り込み)XPブースト(ロール・チャンネルごとのボーナス)行を追加する対象とボーナス%を設定するレベル報酬(到達時のロール付与と通知)報酬を追加する「レベル」を指定する「付与ロール」を選ぶ通知メッセージを作成する設定を保存する実際の動作と既定値XP が付与される流れXPブーストの加算ルールレベルアップ時の動作上限とクールダウン表示されるメッセージランク表示(/level rank)リーダーボード(/level leaderboard)XP 編集(/level edit-xp)リーダーボードのリセット(/level reset-leaderboard)権限・利用場所に関するメッセージランクカードの表示形式とスタイルリーダーボードの表示形式とスタイルレベルアップ通知の設定(/level setting)送信先通知の形式メッセージのカスタマイズと変数使える Leveling 名前空間の変数注意点・うまくいかないときコマンド一覧次のステップ / 関連ページ