曹你妈的发个开源机器人都要植入你们傻b论坛的链接,是不是舔5K狗的屁/眼子把脑子舔坏了?
去广告版来了,直接部署在CF workers,部署教程:
从@BotFather获取token,并且可以发送/setjoingroups来禁止此Bot被添加到群组
从uuidgenerator获取一个随机uuid作为secret (打开 生成)
从@username_to_id_bot获取你的用户id
登录cloudflare,创建一个worker
配置workers的变量
增加一个ENV_BOT_TOKEN变量,数值为从步骤1中获得的token
增加一个ENV_BOT_SECRET变量,数值为从步骤2中获得的secret
增加一个ENV_ADMIN_UID变量,数值为从步骤3中获得的用户id
绑定kv数据库,创建一个Namespace Name为sbnodeseek的kv数据库,在CF workers 中绑定一下这个,变量名填 nfd
通过打开
使用方法
当其他用户给bot发消息,会被转发到bot创建者
用户回复普通文字给转发的消息时,会回复到原消息发送者
用户回复/block, /unblock, /checkblock等命令会执行相关指令,不会回复到原消息发送者
// =================================================================
// 配置信息 (必须填写)
// =================================================================
const TOKEN = ENV_BOT_TOKEN; // 从 @BotFather 获取
const WEBHOOK = '/endpoint'; // 不用管
const SECRET = ENV_BOT_SECRET; // 一个安全的随机字符串,打开 生成
const ADMIN_UID = ENV_ADMIN_UID; // 您的 Telegram User ID
// =================================================================
// 核心功能 (无需修改)
// =================================================================
/**
* 构建 Telegram API 的请求 URL
*/
function apiUrl(methodName, params = null) {
let query = '';
if (params) {
query = '?' + new URLSearchParams(params).toString();
}
return ` {TOKEN}/${methodName}${query}`;
}
/**
* 发起 Telegram API 请求
*/
function requestTelegram(methodName, body, params = null) {
return fetch(apiUrl(methodName, params), {
method: 'POST',
headers: {
'content-type': 'application/json'
},
body: JSON.stringify(body)
}).then(r => r.json());
}
/**
* 封装 sendMessage 请求
*/
function sendMessage(msg = {}) {
return requestTelegram('sendMessage', msg);
}
/**
* 封装 copyMessage 请求
*/
function copyMessage(msg = {}) {
return requestTelegram('copyMessage', msg);
}
/**
* 封装 forwardMessage 请求
*/
function forwardMessage(msg) {
return requestTelegram('forwardMessage', msg);
}
/**
* Cloudflare Worker 的主入口,监听网络请求
*/
addEventListener('fetch', event => {
const url = new URL(event.request.url);
if (url.pathname === WEBHOOK) {
event.respondWith(handleWebhook(event));
} else if (url.pathname === '/registerWebhook') {
event.respondWith(registerWebhook(event, url, WEBHOOK, SECRET));
} else if (url.pathname === '/unRegisterWebhook') {
event.respondWith(unRegisterWebhook(event));
} else {
event.respondWith(new Response('No handler for this request'));
}
});
/**
* 处理来自 Telegram 的 Webhook 请求
*/
async function handleWebhook(event) {
// 验证安全密钥
if (event.request.headers.get('X-Telegram-Bot-Api-Secret-Token') !== SECRET) {
return new Response('Unauthorized', { status: 403 });
}
const update = await event.request.json();
event.waitUntil(onUpdate(update)); // 异步处理消息
return new Response('Ok');
}
/**
* 处理更新事件
*/
async function onUpdate(update) {
if ('message' in update) {
await onMessage(update.message);
}
}
/**
* 处理消息的核心逻辑
*/
async function onMessage(message) {
// 如果消息来自管理员
if (message.chat.id.toString() === ADMIN_UID) {
// 检查管理员是否在回复某条消息
if (message?.reply_to_message?.forward_from) {
// 从 KV 存储中查找原始用户的 chat_id
const guestChatId = await nfd.get('msg-map-' + message.reply_to_message.message_id);
if (guestChatId) {
return copyMessage({
chat_id: guestChatId,
from_chat_id: message.chat.id,
message_id: message.message_id,
});
}
} else {
// 如果管理员不是在回复,可以发个提示
return sendMessage({
chat_id: ADMIN_UID,
text: '提示:请直接回复由机器人转发的用户消息来进行回复。'
});
}
} else {
// 如果消息来自普通用户(访客),则转发给管理员
return handleGuestMessage(message);
}
}
/**
* 处理访客消息:转发并记录映射关系
*/
async function handleGuestMessage(message) {
// 转发消息给管理员
const forwardReq = await forwardMessage({
chat_id: ADMIN_UID,
from_chat_id: message.chat.id,
message_id: message.message_id
});
// 如果转发成功,则在 KV 中存储映射关系
// 'msg-map-<管理员收到的消息ID>' -> '访客的ChatID'
if (forwardReq.ok) {
await nfd.put('msg-map-' + forwardReq.result.message_id, message.chat.id.toString());
}
}
// =================================================================
// Webhook 设置工具 (无需修改)
// =================================================================
/**
* 注册 Webhook
*/
async function registerWebhook(event, requestUrl, suffix, secret) {
const webhookUrl = `${requestUrl.protocol}//${requestUrl.hostname}${suffix}`;
const r = await (await fetch(apiUrl('setWebhook', { url: webhookUrl, secret_token: secret }))).json();
return new Response('ok' in r && r.ok ? 'Ok' : JSON.stringify(r, null, 2));
}
/**
* 注销 Webhook
*/
async function unRegisterWebhook(event) {
const r = await (await fetch(apiUrl('setWebhook', { url: '' }))).json();
return new Response('ok' in r && r.ok ? 'Ok' : JSON.stringify(r, null, 2));
}复制代码
去广告版来了,直接部署在CF workers,部署教程:
从@BotFather获取token,并且可以发送/setjoingroups来禁止此Bot被添加到群组
从uuidgenerator获取一个随机uuid作为secret (打开 生成)
从@username_to_id_bot获取你的用户id
登录cloudflare,创建一个worker
配置workers的变量
增加一个ENV_BOT_TOKEN变量,数值为从步骤1中获得的token
增加一个ENV_BOT_SECRET变量,数值为从步骤2中获得的secret
增加一个ENV_ADMIN_UID变量,数值为从步骤3中获得的用户id
绑定kv数据库,创建一个Namespace Name为sbnodeseek的kv数据库,在CF workers 中绑定一下这个,变量名填 nfd
通过打开
使用方法
当其他用户给bot发消息,会被转发到bot创建者
用户回复普通文字给转发的消息时,会回复到原消息发送者
用户回复/block, /unblock, /checkblock等命令会执行相关指令,不会回复到原消息发送者
// =================================================================
// 配置信息 (必须填写)
// =================================================================
const TOKEN = ENV_BOT_TOKEN; // 从 @BotFather 获取
const WEBHOOK = '/endpoint'; // 不用管
const SECRET = ENV_BOT_SECRET; // 一个安全的随机字符串,打开 生成
const ADMIN_UID = ENV_ADMIN_UID; // 您的 Telegram User ID
// =================================================================
// 核心功能 (无需修改)
// =================================================================
/**
* 构建 Telegram API 的请求 URL
*/
function apiUrl(methodName, params = null) {
let query = '';
if (params) {
query = '?' + new URLSearchParams(params).toString();
}
return ` {TOKEN}/${methodName}${query}`;
}
/**
* 发起 Telegram API 请求
*/
function requestTelegram(methodName, body, params = null) {
return fetch(apiUrl(methodName, params), {
method: 'POST',
headers: {
'content-type': 'application/json'
},
body: JSON.stringify(body)
}).then(r => r.json());
}
/**
* 封装 sendMessage 请求
*/
function sendMessage(msg = {}) {
return requestTelegram('sendMessage', msg);
}
/**
* 封装 copyMessage 请求
*/
function copyMessage(msg = {}) {
return requestTelegram('copyMessage', msg);
}
/**
* 封装 forwardMessage 请求
*/
function forwardMessage(msg) {
return requestTelegram('forwardMessage', msg);
}
/**
* Cloudflare Worker 的主入口,监听网络请求
*/
addEventListener('fetch', event => {
const url = new URL(event.request.url);
if (url.pathname === WEBHOOK) {
event.respondWith(handleWebhook(event));
} else if (url.pathname === '/registerWebhook') {
event.respondWith(registerWebhook(event, url, WEBHOOK, SECRET));
} else if (url.pathname === '/unRegisterWebhook') {
event.respondWith(unRegisterWebhook(event));
} else {
event.respondWith(new Response('No handler for this request'));
}
});
/**
* 处理来自 Telegram 的 Webhook 请求
*/
async function handleWebhook(event) {
// 验证安全密钥
if (event.request.headers.get('X-Telegram-Bot-Api-Secret-Token') !== SECRET) {
return new Response('Unauthorized', { status: 403 });
}
const update = await event.request.json();
event.waitUntil(onUpdate(update)); // 异步处理消息
return new Response('Ok');
}
/**
* 处理更新事件
*/
async function onUpdate(update) {
if ('message' in update) {
await onMessage(update.message);
}
}
/**
* 处理消息的核心逻辑
*/
async function onMessage(message) {
// 如果消息来自管理员
if (message.chat.id.toString() === ADMIN_UID) {
// 检查管理员是否在回复某条消息
if (message?.reply_to_message?.forward_from) {
// 从 KV 存储中查找原始用户的 chat_id
const guestChatId = await nfd.get('msg-map-' + message.reply_to_message.message_id);
if (guestChatId) {
return copyMessage({
chat_id: guestChatId,
from_chat_id: message.chat.id,
message_id: message.message_id,
});
}
} else {
// 如果管理员不是在回复,可以发个提示
return sendMessage({
chat_id: ADMIN_UID,
text: '提示:请直接回复由机器人转发的用户消息来进行回复。'
});
}
} else {
// 如果消息来自普通用户(访客),则转发给管理员
return handleGuestMessage(message);
}
}
/**
* 处理访客消息:转发并记录映射关系
*/
async function handleGuestMessage(message) {
// 转发消息给管理员
const forwardReq = await forwardMessage({
chat_id: ADMIN_UID,
from_chat_id: message.chat.id,
message_id: message.message_id
});
// 如果转发成功,则在 KV 中存储映射关系
// 'msg-map-<管理员收到的消息ID>' -> '访客的ChatID'
if (forwardReq.ok) {
await nfd.put('msg-map-' + forwardReq.result.message_id, message.chat.id.toString());
}
}
// =================================================================
// Webhook 设置工具 (无需修改)
// =================================================================
/**
* 注册 Webhook
*/
async function registerWebhook(event, requestUrl, suffix, secret) {
const webhookUrl = `${requestUrl.protocol}//${requestUrl.hostname}${suffix}`;
const r = await (await fetch(apiUrl('setWebhook', { url: webhookUrl, secret_token: secret }))).json();
return new Response('ok' in r && r.ok ? 'Ok' : JSON.stringify(r, null, 2));
}
/**
* 注销 Webhook
*/
async function unRegisterWebhook(event) {
const r = await (await fetch(apiUrl('setWebhook', { url: '' }))).json();
return new Response('ok' in r && r.ok ? 'Ok' : JSON.stringify(r, null, 2));
}复制代码