本帖最后由 小学生 于 2025-8-8 15:22 编辑
曹你妈的发个开源机器人都要植入你们傻b论坛的链接,是不是舔5K狗的屁/眼子把脑子舔坏了?
去广告版来了,直接部署在CF workers,部署教程:
从@BotFather获取token,并且可以发送/setjoingroups来禁止此Bot被添加到群组
从uuidgenerator获取一个随机uuid作为secret (打开https://www.uuidgenerator.net/ 生成)
从@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
通过打开https://xxx.workers.dev/registerWebhook来注册websoket,显示OK说明成功了
使用方法
当其他用户给bot发消息,会被转发到bot创建者
用户回复普通文字给转发的消息时,会回复到原消息发送者
• // =================================================================
• // 配置信息 (必须填写)
• // =================================================================
•
• const TOKEN = ENV_BOT_TOKEN; // 从 @BotFather 获取
• const WEBHOOK = '/endpoint';
• const SECRET = ENV_BOT_SECRET; // 一个安全的随机字符串 (A-Z, a-z, 0-9, _ and -)
• const ADMIN_UID = ENV_ADMIN_UID; // 您的 Telegram User ID
•
• // =================================================================
• // 核心功能 (无需修改)
• // =================================================================
•
• function apiUrl(methodName, params = null) {
• let query = '';
• if (params) {
• query = '?' + new URLSearchParams(params).toString();
• }
• return `https://api.telegram.org/bot${TOKEN}/${methodName}${query}`;
• }
•
• 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());
• }
•
• function sendMessage(msg = {}) {
• return requestTelegram('sendMessage', msg);
• }
•
• function copyMessage(msg = {}) {
• return requestTelegram('copyMessage', msg);
• }
•
• function forwardMessage(msg) {
• return requestTelegram('forwardMessage', msg);
• }
•
• 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'));
• }
• });
•
• 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) {
• const chatId = message.chat.id.toString();
•
• // 如果来自管理员
• if (chatId === ADMIN_UID) {
• const reply = message.reply_to_message;
•
• // 检查是否在回复转发消息
• if (reply && (reply.forward_from || reply.forward_sender_name)) {
• const guestChatId = await nfd.get('msg-map-' + reply.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 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
• });
•
• if (forwardReq.ok && forwardReq.result && forwardReq.result.message_id) {
• await nfd.put('msg-map-' + forwardReq.result.message_id, message.chat.id.toString());
• } else {
• await sendMessage({
• chat_id: ADMIN_UID,
• text: `❌ 转发消息失败:${JSON.stringify(forwardReq)}`
• });
• }
• }
•
• // =================================================================
• // 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));
• }
•
• 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));
• }
•
曹你妈的发个开源机器人都要植入你们傻b论坛的链接,是不是舔5K狗的屁/眼子把脑子舔坏了?
去广告版来了,直接部署在CF workers,部署教程:
从@BotFather获取token,并且可以发送/setjoingroups来禁止此Bot被添加到群组
从uuidgenerator获取一个随机uuid作为secret (打开https://www.uuidgenerator.net/ 生成)
从@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
通过打开https://xxx.workers.dev/registerWebhook来注册websoket,显示OK说明成功了
使用方法
当其他用户给bot发消息,会被转发到bot创建者
用户回复普通文字给转发的消息时,会回复到原消息发送者
• // =================================================================
• // 配置信息 (必须填写)
• // =================================================================
•
• const TOKEN = ENV_BOT_TOKEN; // 从 @BotFather 获取
• const WEBHOOK = '/endpoint';
• const SECRET = ENV_BOT_SECRET; // 一个安全的随机字符串 (A-Z, a-z, 0-9, _ and -)
• const ADMIN_UID = ENV_ADMIN_UID; // 您的 Telegram User ID
•
• // =================================================================
• // 核心功能 (无需修改)
• // =================================================================
•
• function apiUrl(methodName, params = null) {
• let query = '';
• if (params) {
• query = '?' + new URLSearchParams(params).toString();
• }
• return `https://api.telegram.org/bot${TOKEN}/${methodName}${query}`;
• }
•
• 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());
• }
•
• function sendMessage(msg = {}) {
• return requestTelegram('sendMessage', msg);
• }
•
• function copyMessage(msg = {}) {
• return requestTelegram('copyMessage', msg);
• }
•
• function forwardMessage(msg) {
• return requestTelegram('forwardMessage', msg);
• }
•
• 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'));
• }
• });
•
• 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) {
• const chatId = message.chat.id.toString();
•
• // 如果来自管理员
• if (chatId === ADMIN_UID) {
• const reply = message.reply_to_message;
•
• // 检查是否在回复转发消息
• if (reply && (reply.forward_from || reply.forward_sender_name)) {
• const guestChatId = await nfd.get('msg-map-' + reply.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 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
• });
•
• if (forwardReq.ok && forwardReq.result && forwardReq.result.message_id) {
• await nfd.put('msg-map-' + forwardReq.result.message_id, message.chat.id.toString());
• } else {
• await sendMessage({
• chat_id: ADMIN_UID,
• text: `❌ 转发消息失败:${JSON.stringify(forwardReq)}`
• });
• }
• }
•
• // =================================================================
• // 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));
• }
•
• 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));
• }
•