2025-04-24 10:11:12 +08:00

44 lines
1.6 KiB
JavaScript
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

// 關掉 webhook專心用 polling 模式
// 執行以下指令取消 webhook只需要做一次
// curl -F "url=" https://api.telegram.org/bot7916405163:AAGllDyNHNRTPDJ4gjwFPDi-TFDyFwD4foA/setWebhook
require('dotenv').config(); // 加這行載入 .env 檔案
const TelegramBot = require('node-telegram-bot-api');
const token = process.env.BOT_TOKEN; // 從環境變數讀取 token
//括號裡面的內容需要改為在第5步獲得的Token
const bot = new TelegramBot(token, { polling: true });
//使用Long Polling的方式與Telegram伺服器建立連線
//收到Start訊息時會觸發這段程式
bot.onText(/\/start/, function (msg) {
const chatId = msg.chat.id; //用戶的ID
const resp = '你好'; //括號裡面的為回應內容,可以隨意更改
bot.sendMessage(chatId, resp); //發送訊息的function
});
bot.onText(/\/help/, function (msg) {
const chatId = msg.chat.id;
const resp = '才不告訴逆雷';
bot.sendMessage(chatId, resp);
});
// 收到roll開頭的訊息時會觸發這段程式
bot.onText(/\/roll(?:@[\w_]+)?(?:\s+(\d*)d(\d+))?/i, function (msg, match) {
// console.log(`✅ Bot roll`);
const chatId = msg.chat.id;
let count = parseInt(match[1]) || 1;
let sides = parseInt(match[2]) || 6;
if (count > 100 || sides > 1000) {
return bot.sendMessage(chatId, '⚠️ 數字過大,請保持理性!');
}
const rolls = Array.from({ length: count }, () => Math.floor(Math.random() * sides) + 1);
const total = rolls.reduce((sum, v) => sum + v, 0);
const resp = `🎲 ${count}d${sides} 擲出:\n🎯 ${rolls.join(' + ')} = ${total}`;
bot.sendMessage(chatId, resp);
});