檔案總覽
📌 一个基于隔壁傻b论坛开发的TG机器人共 10 樓
主帖小学生
🕐 2025-7-31 11:44:29
本帖最后由 小学生 于 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));

• }

#? 樓b66667777
🕐 2025-7-31 11:48:45
亲自部署
#? 樓小学生
🕐 2025-7-31 11:50:56
b66667777 发表于 2025-7-31 11:48

亲自部署
#? 樓度百
🕐 2025-7-31 14:35:24
#? 樓jintong
🕐 2025-7-31 14:36:25
收藏!点赞1
#? 樓jianshan
🕐 2025-7-31 14:38:42
#? 樓度百
🕐 2025-7-31 14:59:54
老哥部署好回复机器人转发的消息无法传送给咨询人
#? 樓小学生
🕐 2025-7-31 15:23:27
度百 发表于 2025-7-31 14:59

老哥部署好回复机器人转发的消息无法传送给咨询人
#? 樓NodeLoc
🕐 2025-7-31 15:25:25
666
#? 樓凤凰竹们
🕐 2025-7-31 15:55:53
可以转发但是无法回复消息