最近友達とSpigotの自宅サーバーを立てて遊んでます。
そのサーバーで使える便利ツールを作って行きます。
今回はパート1です
サーバー環境
記事執筆時の環境です。
サーバー:Spigot
環境: Windows11 Home
ポート開放: SecureShareNet
主なプラグイン: DiscordSRV,WorldEdit,BlueMap,GeyserMCなど その他合計30個
便利ツール
今回作るツールでは、主にやりたいことが2つあります。
・自作DiscordBotで サーバーのアドレス、などをいちいち送らなくていいようにする。
・メンテ起動をできるようにする。(DiscordBotにメンテって言ってもらう)
ん? それくらい自分でやれって? めんどくさいから楽にしたい。
DiscordBot
今回は、discordのJavaScriptパッケージのdiscord.js
を使います。
基本的にはNode.jsでつくる。
discord.js
npm install discord.js
テスト
試しにテストで、メッセージを送って見ます。
参考記事⇩
無事発言できたので、JSコードを書きます。
JS
const express = require('express');
const { Client, GatewayIntentBits } = require('discord.js');
const path = require('path');
const bodyParser = require('body-parser');
const DISCORD_TOKEN = 'YOUR_DISCORD_BOT_TOKEN';
const CHANNEL_ID = 'YOUR_CHANNEL_ID';
const app = express();
const client = new Client({ intents: [GatewayIntentBits.Guilds, GatewayIntentBits.GuildMessages] });
client.login(DISCORD_TOKEN);
client.once('ready', () => {
console.log('Bot is ready!');
});
app.set('view engine', 'ejs');
app.set('views', path.join(__dirname, 'views'));
app.use(express.static(path.join(__dirname, 'public')));
app.use(bodyParser.urlencoded({ extended: true }));
app.get('/', (req, res) => {
res.render('index');
});
app.post('/send-message', async (req, res) => {
const { options } = req.body;
let message = '';
if (options && options.includes('Option 1')) {
message += '通常起動 ';
}
if (options && options.includes('Option 2')) {
message += 'メンテナンス起動 ';
}
if (options && options.includes('Option 3')) {
message += 'Javaのみ起動(BE不可)';
}
if (!message) {
return res.status(400).send('オプションが選択されていません。');
}
try {
const channel = await client.channels.fetch(CHANNEL_ID);
await channel.send(message.trim());
res.send('メッセージが送信されました: ' + message.trim());
} catch (error) {
console.error('メッセージ送信エラー:', error);
res.status(500).send('メッセージの送信に失敗しました。');
}
});
const PORT = 3000;
app.listen(PORT, () => {
console.log(`サーバーがポート${PORT}で起動しました。`);
});
ejs
<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Discordメッセージ送信</title>
</head>
<body>
<h1>Discordにメッセージを送信</h1>
<form action="/send-message" method="POST">
<label>
<input type="checkbox" name="options" value="Option 1"> Option 1 (通常起動)
</label><br>
<label>
<input type="checkbox" name="options" value="Option 2"> Option 2 (メンテナンス起動)
</label><br>
<label>
<input type="checkbox" name="options" value="Option 3"> Option 3 (Javaのみ起動(BE不可))
</label><br>
<button type="submit">送信</button>
</form>
</body>
</html>
多分エラーが出る気がするけど次回から動作確認をします。
早めにコードの変なところを見つけた方はコメントをお願いします。
今回はここまd
続き
pt.1
pt.2以降
未投稿