discord.js 初挑戦。
もくもく会のサーバーで使うログ用のbotを作りました。
- npm v8.11.0
- Node.js v16.15.1
- discord.js v13.8.1
導入
こちらの記事をガッツリ参考に、というかマルパクしました。
ありがとうございます。
が、clientインスタンスは下記に書き換えないと動かなかったので注意。
const client = new Client({intents: [Intents.FLAGS.GUILDS, Intents.FLAGS.GUILD_MESSAGES]});
.gitignoreを設定
.gitignoreに入れておく。
node_modules
config.json
.env
config.json は Github なんかでコード管理したいときにトークン置き場として使う。詳しくは Discord.js Japan User Group のページを参照。
Discord API 公式Doc
APIの仕様はこちら参考↓
実装
まずはjsonファイルにIDもろもろを書いておく。
config.json
{
"token": "トークン",
"guildId": "サーバーID",
"logsId": "ログ投稿用チャンネルのID"
}
index.jsにこれらを書く。
index.js
const { Client, Intents } = require("discord.js");
const config = require("./config.json"); //トークン格納用
const client = new Client({
intents: [Intents.FLAGS.GUILDS, Intents.FLAGS.GUILD_MESSAGES],
});
const guildId = config.guildId;
const logsId = config.logsId;
client.once("ready", () => {
console.log(`${client.user.tag} 起動完了`);
});
client.on("messageCreate", (message) => {
if (message.author.bot) {
return;
}
if (
message.content.startsWith("■今日やること") ||
message.content.startsWith("■今日の成果") //もくもく会参加時のテンプレを拾う
) {
client.channels.cache.get(logsId).send({ //指定したチャンネルIDに下記内容を転記
content: `${message.author} \n ${message.content}`, //@投稿者<改行>投稿内容
});
}
});
client.on("messageCreate", async (message) => {
if (message.content.startsWith("■今日の成果")) {
message.react("🍵"); //お疲れ様の意
}
});
client.login(config.token); //ログイン
起動
package.jsonに以下を追記しておく。
package.json
"start": "node ."
プロジェクトディレクトリ(index.jsのルート)で「node .」と打ち込めば起動する。
こんな感じで指定チャンネルに投稿してくれる。