365bet主页

tg机器人 快速查询硅基流动余额

📅 2026-01-31 18:57:05 👤 admin 👁️ 8817 🏷️ 289

快速查询硅基流动余额 适合拥有多个账号key的老铁

直接cloudflare部署即可,支持刷新查询,用的缓存,将就用吧。

效果:

微信图片_2025-02-10_210013_054637×734 61.4 KB

// tgbot机器人 查询硅基流动key余额及信息

// cloudflare-worker-bot.js

// 部署后执行https://域名/init_webhook 设置tg的webhook。

// tg @hkxiaoyao

const TELEGRAM_BOT_TOKEN = 'your_telegram_bot_token'; // 替换为你的 Telegram Bot Token 只需要修改这里

const SILICON_FLOW_API_URL = 'https://api.siliconflow.cn/v1/user/info'; // 硅基流动 API 地址

addEventListener('fetch', event => {

event.respondWith(handleRequest(event.request));

});

async function handleRequest(request) {

const url = new URL(request.url);

const path = url.pathname;

// 初始化 Webhook 地址(仅在访问 /init_webhook 时触发)

if (path === '/init_webhook') {

const webhookUrl = `https://${url.host}/webhook`;

return await initWebhook(webhookUrl);

}

// Telegram 机器人逻辑

if (request.method === 'POST') {

const json = await request.json();

if (json.message) {

// 处理普通消息

return await handleTelegramMessage(json.message);

} else if (json.callback_query) {

// 处理回调查询(刷新按钮点击事件)

return await handleCallbackQuery(json.callback_query);

}

}

return new Response('Not Found', { status: 404 });

}

async function initWebhook(webhookUrl) {

const response = await fetch(`https://api.telegram.org/bot${TELEGRAM_BOT_TOKEN}/setWebhook`, {

method: 'POST',

headers: {

'Content-Type': 'application/json'

},

body: JSON.stringify({

url: webhookUrl

})

});

const data = await response.json();

return new Response(JSON.stringify(data), {

headers: { 'Content-Type': 'application/json' }

});

}

async function handleTelegramMessage(message) {

const chatId = message.chat.id;

const text = message.text;

// 检查文本中是否包含 sk- 开头且长度为 51 位的 key

const keyPattern = /sk-[a-zA-Z0-9\-]{48}/g; // 严格匹配 sk- 开头且 48 位的 key

const keys = text.match(keyPattern);

if (keys) {

const key = keys[0]; // 获取第一个匹配的 key

try {

// 调用硅基流动 API 查询用户信息

const siliconFlowResponse = await fetch(SILICON_FLOW_API_URL, {

method: 'GET',

headers: {

'Authorization': `Bearer ${key}`

}

});

if (siliconFlowResponse.status !== 200) {

return sendTelegramMessage(chatId, '❌ 无效的 key 或 API 错误');

}

const siliconFlowData = await siliconFlowResponse.json();

const userInfo = siliconFlowData.data;

// 获取当前东八区时间并格式化

const now = new Date();

now.setHours(now.getHours() + 8); // 转换为东八区时间

const formattedDate = now.toISOString().replace('T', ' ').substring(0, 19);

// 构造回复文本(保留符号)

const responseText = `

🖥️ 用户ID:${userInfo.id}

🚀 用户名:${userInfo.name}

🌐 邮箱:${userInfo.email}

⏳ 账户状态:${userInfo.status}

📈 赠送余额:${userInfo.balance}

📋 充值余额:${userInfo.chargeBalance}

🌐 总余额:${userInfo.totalBalance}

🕒 查询时间:${formattedDate}

`.trim();

// 构造带有刷新按钮的键盘

const keyboard = [

[{

text: '🔄 刷新查询',

callback_data: `/query ${key}`

}]

];

return sendTelegramMessageWithKeyboard(chatId, responseText, keyboard);

} catch (error) {

console.error(error);

return sendTelegramMessage(chatId, '❌ 处理请求时发生错误');

}

} else {

// 如果没有检测到有效的 key,则回复提示信息

return sendTelegramMessage(chatId, '❌ 请发送一个有效的硅基流动 key,格式为 sk- 开头且长度为 51 位');

}

}

async function handleCallbackQuery(callbackQuery) {

const { message, data } = callbackQuery;

const chatId = message.chat.id;

const messageId = message.message_id;

const key = data.split(' ')[1]; // 提取回调数据中的 key

try {

// 调用硅基流动 API 查询用户信息

const siliconFlowResponse = await fetch(SILICON_FLOW_API_URL, {

method: 'GET',

headers: {

'Authorization': `Bearer ${key}`

}

});

if (siliconFlowResponse.status !== 200) {

return editTelegramMessage(chatId, messageId, '❌ 无效的 key 或 API 错误');

}

const siliconFlowData = await siliconFlowResponse.json();

const userInfo = siliconFlowData.data;

// 获取当前东八区时间并格式化

const now = new Date();

now.setHours(now.getHours() + 8); // 转换为东八区时间

const formattedDate = now.toISOString().replace('T', ' ').substring(0, 19);

// 构造回复文本(保留符号)

const responseText = `

🖥️ 用户ID:${userInfo.id}

🚀 用户名:${userInfo.name}

🌐 邮箱:${userInfo.email}

⏳ 账户状态:${userInfo.status}

📈 赠送余额:${userInfo.balance}

📋 充值余额:${userInfo.chargeBalance}

🌐 总余额:${userInfo.totalBalance}

🕒 查询时间:${formattedDate}

`.trim();

// 构造带有刷新按钮的键盘

const keyboard = [

[{

text: '🔄 刷新查询',

callback_data: `/query ${key}`

}]

];

// 修改原消息内容

return editTelegramMessageWithKeyboard(chatId, messageId, responseText, keyboard);

} catch (error) {

console.error(error);

return editTelegramMessage(chatId, messageId, '❌ 处理请求时发生错误');

}

}

async function editTelegramMessage(chatId, messageId, text) {

const url = `https://api.telegram.org/bot${TELEGRAM_BOT_TOKEN}/editMessageText`;

const response = await fetch(url, {

method: 'POST',

headers: {

'Content-Type': 'application/json'

},

body: JSON.stringify({

chat_id: chatId,

message_id: messageId,

text: text

})

});

return new Response(JSON.stringify(await response.json()), {

headers: { 'Content-Type': 'application/json' }

});

}

async function editTelegramMessageWithKeyboard(chatId, messageId, text, keyboard) {

const url = `https://api.telegram.org/bot${TELEGRAM_BOT_TOKEN}/editMessageText`;

const response = await fetch(url, {

method: 'POST',

headers: {

'Content-Type': 'application/json'

},

body: JSON.stringify({

chat_id: chatId,

message_id: messageId,

text: text,

reply_markup: {

inline_keyboard: keyboard

}

})

});

return new Response(JSON.stringify(await response.json()), {

headers: { 'Content-Type': 'application/json' }

});

}

async function sendTelegramMessage(chatId, text) {

const url = `https://api.telegram.org/bot${TELEGRAM_BOT_TOKEN}/sendMessage`;

const response = await fetch(url, {

method: 'POST',

headers: {

'Content-Type': 'application/json'

},

body: JSON.stringify({

chat_id: chatId,

text: text

})

});

return new Response(JSON.stringify(await response.json()), {

headers: { 'Content-Type': 'application/json' }

});

}

async function sendTelegramMessageWithKeyboard(chatId, text, keyboard) {

const url = `https://api.telegram.org/bot${TELEGRAM_BOT_TOKEN}/sendMessage`;

const response = await fetch(url, {

method: 'POST',

headers: {

'Content-Type': 'application/json'

},

body: JSON.stringify({

chat_id: chatId,

text: text,

reply_markup: {

inline_keyboard: keyboard

}

})

});

return new Response(JSON.stringify(await response.json()), {

headers: { 'Content-Type': 'application/json' }

});

}

相关推荐

网吧无主机什么原理(网吧无主机的工作原理是什么?)

网吧无主机什么原理 随着网络技术的快速发展,无主机的网络环境逐渐成为互联网基础设施的重要组成部分。在一些人口密集的地区,网吧是居

剡注是什么意思

©国学猫 www.guoxuemao.com 皖ICP备18026045号-3 皖公网安备 34011102003303号 联系邮箱:i0551#vip.qq.com 反馈 本站内容来源于网友提交及搜索引擎,如果我们

解锁健康密码:三款苏打水的科学饮水指南

清晨的第一杯水 晨光微熹时,玻璃杯与流水的碰撞声总带着某种仪式感。我习惯在书桌前放一杯清水,看光线穿过水面在实木桌面上投下摇曳的