摘要
正在生成中……
用了这个项目部署了两个机器人,
简单来说,它就是代理Discord对话Coze-Bot,实现以API形式请求GPT4模型。
好像是免费,坏处是时不时会被Coze反制,如果哪天出问题就得看看作者有没有更新代码和镜像,还有就是响应比较慢,毕竟经过了几层转发。
但我今天遇到的问题是被Discord限制了,哈哈,就是项目中有一个 环境变量。
CHANNEL_AUTO_DEL_TIME=5 [可选]频道自动删除时间(秒) 此参数为每次对话完成后自动删除频道的时间(默认为5s),为0时则不删除,推荐不使用此环境变量
作者的初衷是每次对话新开一个频道作为对话隔离,为了防止太多对话设置自动删除时间,我设置成0,也就是永不删除,因为我想一直作为记录保存在discord(也可以,不过不是这样设置的,见后文),但是没想到discord也有限制,就是频道最多能开好像三四百个吧,今天使用时发现不能翻译了,一看discord对话已经几百条了,红晃晃的未读消息数,再看 docker logs 显示创建新的discord频道失败,看来达到了创建频道数的最大值。
但是这三四百个对话,手动一个个删除十分麻烦,况且还有一个确定的界面,就用chatgpt4写了点js代码,在前端执行。如果一次没删除完,再把对话分组的滚动条下拉,再执行一次。
吐槽一下:discord禁止了浏览器使用F12或者右键打开的方式,请从浏览器菜单的 视图>开发者>开发者工具
打开。
function performAction(dialogId){
//自己抓包删除一个对话的请求,导出来fetch,下面的省略很多
fetch(`https://discord.com/api/v9/channels/${dialogId}`, {
"headers": {
"accept": "*/*",
"accept-language": "zh-CN,zh;q=0.9,en-US;q=0.8,en;q=0.7",
"authorization": "你的authorization",
"cache-control": "no-cache",
"pragma": "no-cache",
"sec-ch-ua": "\"Not A(Brand\";v=\"99\", \"Google Chrome\";v=\"121\", \"Chromium\";v=\"121\"",
"sec-ch-ua-mobile": "?0",
"sec-ch-ua-platform": "\"macOS\"",
"sec-fetch-dest": "empty",
"sec-fetch-mode": "cors",
"sec-fetch-site": "same-origin",
"x-debug-options": "bugReporterEnabled",
"x-discord-locale": "zh-CN",
"x-discord-timezone": "Asia/Shanghai",
"x-super-properties": "自己抓包找"
},
"referrer": "https://discord.com/channels/1194920210818416700/1217403174495850587",
"referrerPolicy": "strict-origin-when-cross-origin",
"body": null,
"method": "DELETE",
"mode": "cors",
"credentials": "include"
});
}
const channelId = '你的频道id' //也就是项目中的 GUILD_ID
const allLinks = document.querySelectorAll('a');
// 定义筛选条件
const prefix = `/channels/${channelId}/`;
const keyword = 'cdp-';
// 过滤并处理所有符合条件的 a 标签的 href
const filteredHrefs = Array.from(allLinks)
.filter(link => link.getAttribute('href')?.startsWith(prefix) && link.getAttribute('aria-label')?.includes(keyword))
.map(link => link.getAttribute('href').slice(prefix.length)); // slice 从前缀后开始截取
filteredHrefs.forEach(performAction)
PS, 附保留对话在特定频道的环境变量设置,其实也很简单,设置如下:
- DEFAULT_CHANNEL_ENABLE=1
- CHANNEL_AUTO_DEL_TIME=0