前言
此bot可以在云湖上使用Google搜索
访问链接使用云湖机器人【Google】
https://yhfx.jwznb.com/share?key=nUNgDBS8LmFJ&ts=1728116702
机器人ID: 39049819
已开源,项目地址:butlanys/google-search-yhchat (github.com)
可帮助小白快速解决问题

并且此项目支持无服务器部署!!!
简单快速易上手
申请api
在这里申请一个api key:Custom Search JSON API | Programmable Search Engine | Google for Developers

如果没有项目则需要先创建
然后在cloudflare面板中创建一个worker项目
然后将下面的代码覆盖到原来的示例代码中:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65
| addEventListener('fetch', event => { event.respondWith(handleRequest(event.request)); });
async function handleRequest(request) { if (request.method !== 'POST') { return new Response('', { status: 200 }); }
try { const json = await request.json(); const { content, chatId, chatType } = json.event.message; const { senderId } = json.event.sender; const { text } = content; const commandId = json.event.message.commandId; const botCommandId = parseInt(BOT_COMMAND_ID);
let searchQuery = ''; let recvId = ''; let recvType = '';
if (chatType === 'group' && commandId === botCommandId) { searchQuery = text; recvId = chatId; recvType = 'group'; } else if (chatType !== 'group') { searchQuery = text; recvId = senderId; recvType = 'user'; }
if (searchQuery) { try { const encodedQuery = encodeURIComponent(searchQuery); const googleApiUrl = `https://www.googleapis.com/customsearch/v1?key=${GOOGLE_API_KEY}&cx=${GOOGLE_CX}&q=${encodedQuery}`; const response = await fetch(googleApiUrl); const data = await response.json();
let message = ''; if (data.items && data.items.length > 0) { for (let i = 0; i < Math.min(data.items.length, 8); i++) { const item = data.items[i]; message += `<a href="${item.link}">${item.title}</a><br>${item.snippet}<br><br>`; } } else { message = "未找到结果。"; } await sendMessage(recvId, message, data.items && data.items.length > 0 ? "html" : "text", recvType); } catch (e) {} }
} catch (e) {}
return new Response('', { status: 200 }); }
async function sendMessage(recvId, content, contentType, recvType) { try { const token = YHCHAT_TOKEN; const url = `https://chat-go.jwzhd.com/open-apis/v1/bot/send?token=${token}`; const bodyContent = JSON.stringify({ recvId, recvType, contentType, content: { text: content } }); const headers = { 'Content-Type': 'application/json' }; await fetch(url, { method: 'POST', headers, body: bodyContent }); } catch (e) {} }
|
点击部署
环境变量
完成后返回刚创建的worker项目主页,点击设置,在下面找到环境与变量
YHCHAT_TOKEN
= 在云湖官网控制台中创建机器人后得到的token
BOT_COMMAND_ID
= 创建一个控制台中创建一个普通按钮后得到的按钮id
GOOGLE_API_KEY
= 上面在谷歌那申请到的api key
GOOGLE_CX
= 根据Google描述,这个叫可编程搜索引擎 ID ,要在可编程搜索 - 所有搜索引擎 (google.com) 中创建,创建好后就可以在概览中看到搜索引擎 ID
设置好这四个环境变量后,就需要返回部署页面中点一下部署
设置解析
接着需要在设置中设置一个自定义域(云湖服务器在国内,而worker域名早已被封禁)
在域和路由
中点击添加选择路由,区域选任意一个域名,然后输入域名+/* (例如yhchat.aaa.com/*)
然后去dns解析中为这个域名添加一个记录,可以cname到dns-cf.hqycloud.top(相比较于cf原来分配的IP,此优选IP可以提升响应速度)
然后将这条域名添加到云湖控制台的配置消息订阅接口
(例如:https://yhchat.aaa.com)
接着就可以到云湖中测试此机器人是否可以正常搜索
效果:
- 群组

- 私聊

一些表情包
