簡易的なレベルシステムのサンプル
Discord.jsでの簡易的なレベルシステムのサンプル keyvと@keyv/sqlite(とpifyはkeyvのバージョンが4.2.5以降の場合)のインストールが必要
@keyv/sqlite のインストールには 最新版のVisual Studio (C++によるデスクトップ開発を含む)が必要なので入れるように。
関連
100メッセージごとに1レベル上がって、!levelコマンドで現在のレベルを出す
code:js
const Discord = require('discord.js');
const client = new Discord.Client({
intents: // ...
});
const Keyv = require('keyv');
const levels = new Keyv('sqlite://db.sqlite', { table: 'levels' });
client.on('messageCreate', async (message) => {
// ボットは除外する
if (message.author.bot) return;
// ユーザーのレベルを取得する。なければ{ count: 0, level: 0 }にする
const level = (await levels.get(message.author.id)) || { count: 0, level: 0 };
// カウントを1増やす
level.count += 1;
// カウントが100になったら0にして、レベルを1増やす
if (level.count >= 100) {
level.count = 0;
level.level += 1;
}
// ユーザーのレベルを保存する
levels.set(message.author.id, level);
// !levelコマンドで現在のレベルを出す
if (message.content === '!level') {
message.channel.send(
現在のレベルは ${level.level} です。次のレベルまであと ${100 - level.count}
);
}
});
client.login('TOKEN');