登录 立即注册

找到421个回复 (用户: 罐子)

罐子 23楼回复 老虎会游泳【已实现】继续发布任务,谁有兴趣帮虎绿林写个内信和@消息的WebSocket推送服务 (2023-03-15//)

@rkonfj,你程序修改一下不就可以实现吗。
一加8Pro

罐子 10楼回复 老虎会游泳【已实现】继续发布任务,谁有兴趣帮虎绿林写个内信和@消息的WebSocket推送服务 (2023-03-14//)

@老虎会游泳@xggz
一加8Pro

罐子 67楼回复 没落的情绪11元的个人服务器 (2023-03-10//)

@deed,8g的在哪里可以买到。
一加8Pro

罐子 11楼回复 童真再见有玩esp32的吗?买了个板子上传项目老是出错不知道是不是接线问题 (2023-03-05//)

@童真再见,可能是感觉是没有拉低短接点用万用表测一下,
一加8Pro

罐子 7楼回复 童真再见有玩esp32的吗?买了个板子上传项目老是出错不知道是不是接线问题 (2023-03-04//)

@胡图图,你是对的。这模块我有十多个。
一加8Pro

罐子 6楼回复 童真再见有玩esp32的吗?买了个板子上传项目老是出错不知道是不是接线问题 (2023-03-04//)

@童真再见
RX接TX
TX接RX
一加8Pro

罐子 5楼回复 童真再见有玩esp32的吗?买了个板子上传项目老是出错不知道是不是接线问题 (2023-03-04//)

@胡图图@童真再见,看图他的tx rx接错了。
一加8Pro

罐子 2楼回复 童真再见有玩esp32的吗?买了个板子上传项目老是出错不知道是不是接线问题 (2023-03-04//)

@童真再见,你在Arduino里面设置了串口的端口里没有
一加8Pro

罐子 1楼回复 咯叽【楼主删除了该帖】 (2023-03-04//)

@咯叽,哦噢
一加8Pro

罐子 10楼回复 听风念给Typora写了个上传图片到cos的脚本 (2023-02-28//)

@听风念,我不用,我最多只会使用minio
一加8Pro

罐子 3楼回复 511求推荐php对接微信订阅号 (2023-02-27//)

@老虎会游泳,其实我想利用chatgpt写出一个WXPusher差不多的程序。
一加8Pro

罐子 3楼回复 残缘[网页插件][更新] @提醒(1.0.4) (2023-02-25//)

@罐子
一加8Pro

罐子 21楼回复 老虎会游泳为了解决ChatGPT小尾巴问题,通过SQL批量更新了大家的网页插件 (2023-02-21//)

@老虎会游泳,好
一加8Pro

罐子 20楼回复 老虎会游泳为了解决ChatGPT小尾巴问题,通过SQL批量更新了大家的网页插件 (2023-02-21//)

@老虎会游泳,好的
一加8Pro

罐子 16楼回复 老虎会游泳为了解决ChatGPT小尾巴问题,通过SQL批量更新了大家的网页插件 (2023-02-21//)

@老虎会游泳,未命名那个代码应该在自定义数据列表public_22里
一加8Pro

罐子 13楼回复 老虎会游泳为了解决ChatGPT小尾巴问题,通过SQL批量更新了大家的网页插件 (2023-02-21//)

@老虎会游泳,我的有小尾巴选项
一加8Pro

罐子 12楼回复 老虎会游泳为了解决ChatGPT小尾巴问题,通过SQL批量更新了大家的网页插件 (2023-02-21//)

hi

罐子 11楼回复 老虎会游泳为了解决ChatGPT小尾巴问题,通过SQL批量更新了大家的网页插件 (2023-02-21//)

@老虎会游泳,我的尾巴还在
一加8Pro

罐子 1楼回复 黑胡子银河麒麟V10自动注销怎么解决 (2023-02-20//)
罐子 12楼回复 罐子记录 (2023-02-20//)
// 聊天框的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

下一页 上一页 (7 / 22页)

5月26日 19:33 星期二

本站由hu60wap6驱动

备案号: 京ICP备18041936号-1