@旧人,电视盒子太大了,没意思,这个小可以用充电宝启动,
还有你这个多少钱买的
// 聊天框的CSS选择器 const chatBoxSelector = 'textarea.w-full.p-0'; // 发送按钮的CSS选择器 const sendButtonSelector = 'button.absolute.p-1'; // 正在输入动效(取代发送按钮)的CSS选择器 const replyNotReadySelector = 'div.text-2xl'; // 聊天回答的CSS选择器 const chatReplySelector = 'div.markdown'; // 用户自身的虎绿林uid const hu60MyUid = 19346; // 改成自己的uid // 用户的虎绿林sid const hu60Sid = '4JfOlTT3iHw58i1ITtpS0okksAAA'; // 带sid的虎绿林URL const hu60BaseUrl = 'https://hu60.cn/q.php/' + hu60Sid + '/'; ///////////////////////////////////////////////////////////// // 发送聊天信息 function sendText(text) { let chatBox = document.querySelector(chatBoxSelector); let sendButton = document.querySelector(sendButtonSelector); chatBox.value = text; sendButton.click(); } // 读取响应 function readReply() { let reply = Array.from(document.querySelectorAll(chatReplySelector)).at(-1); let lines = []; if (!reply.childNodes) { // 错误信息 return reply.innerText; } reply.childNodes.forEach(x => { if (x.tagName == 'PRE') { // 代码 lines.push("\n```\n" + x.querySelector('code').innerText + "\n```\n"); } else { // 正文 lines.push(x.innerText); } }); return lines.join("\n\n"); } // 判断响应是否结束 function isFinished() { return document.querySelector(replyNotReadySelector) == null; } // 读取@消息 async function readAtInfo() { let response = await fetch(hu60BaseUrl + '[email protected]?_origin=*&_content=json'); return await response.json(); } // 读取帖子内容 async function readTopicContent(path) { let url = hu60BaseUrl + path.replace('{$BID}', 'json').replace('?', '?_origin=*&_content=text&pageSize=1&'); let response = await fetch(url); return await response.json(); } // 回复帖子 async function replyTopic(uid, replyText, topicObject) { let content = "<!md>\n@#" + uid + "," + replyText; let url = null; if (topicObject.tMeta) { // 帖子 url = 'bbs.newreply.'+encodeURIComponent(topicObject.tContents[0].topic_id)+'.json'; } else { // 聊天室 url = 'addin.chat.'+encodeURIComponent(topicObject.chatRomName)+'.json'; } let formData = new FormData(); formData.append('content', content); formData.append('token', topicObject.token); formData.append('go', '1'); let response = await fetch(hu60BaseUrl + url + '?_origin=*', { body: formData, method: "post", redirect: "manual" // 不自动重定向 }); return response; } // 休眠指定的毫秒数 // 用法:await sleep(1000) const sleep = ms => new Promise(r => setTimeout(r, ms)); // 回复@信息 async function replyAtInfo(info) { try { let uid = info.byuid; let url = info.content[0].url; let floor = url.split('#')[1]; // 防止自己和自己对话 if (uid == hu60MyUid || uid < 1) { return; } console.log(info); let topicObject = await readTopicContent(url); let text = null; if (topicObject.tContents) { text = topicObject.tContents[0].content; } else { text = topicObject.chatList[0].content; } sendText(text); do { await sleep(500); } while (!isFinished()); let replyText = readReply(); let response = await replyTopic(uid, replyText, topicObject); console.log(response); } catch (ex) { console.error(ex); } } // 运行机器人 async function run() { console.log('虎绿林ChatGPT机器人已启动'); while (true) { try { // 浏览器用户可能直接输入了问题,等待回答完成 if (!isFinished()) { do { await sleep(500); } while (!isFinished()); } let atInfo = await readAtInfo(); console.log(new Date(), atInfo); for (let i=0; i<atInfo.msgList.length; i++) { await replyAtInfo(atInfo.msgList[i]); } await sleep(1000); } catch (ex) { console.error(ex); } } } run();
一加8Pro
@胡椒舰长,@一起走吧,可以买电视盒子玩,大概50左右,可玩性高很多
@5258,什么公司,你联系的谁?
@老虎会游泳,一万扣了1900。剩8100
一加7pro(皇帝版)
@5258,押金多少
买个电视盒子也挺好用的,有海思盒子刷nas的教程
小米MIX2s(白)
多少钱,1G内存够了,可以跑docker,maradb也就200Mb占用把。 我买了一个退了,刷不进去,玩不动
如果你是个好人,身边就会到处都是黑暗;如果你是个坏人,身边就都是光明。可你却偏偏选择做好人,有什么办法呢?
——来自《狂飙》
这是自动回答?![]()
互联网法院, 大公司黑猫投诉
@5258,找当地工会
一加8Pro
@老虎会游泳,出出主意
一加7pro(皇帝版)
@蛋黄派,哈哈,再去问问?
@雨伤,可恶,这老板不厚道啊
@蛋黄派,反正我15号去的时候成功买到了。都已经到了。我看你发帖时间应该还是在你后面去问的。
@雨伤,……说十多台打包出
@蛋黄派,有吗,我15号晚上22点多还找他买了一个
@希望自己长胖胖,有一些rom只有4g 还没有卡槽
我在docker里执行了第二部,可以获取到ipv6地址,但是无法访问ipv6网络,我试试加上第三部能行不
小米8 Explore Edition (透明色)