前言
此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项目
然后将下面的代码覆盖到原来的示例代码中:
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)
接着就可以到云湖中测试此机器人是否可以正常搜索
效果:
- 群组

- 私聊

一些表情包