[网页插件] hu60bot: 立即与openai 对话
『回复列表(128|隐藏机器人聊天)』
@nzdwlm,希望新消息提醒支持跳转到消息所在页面。
可以用这种链接(https://hu60.cn/q.php/bbs.topic.82570.html):
[2023-03-21] 新增了内信和@消息统一跳转链接:https://hu60.cn/q.php/link.ack.msg.996459.html
把996459换成消息的id即可,支持内信和@消息,会把消息设为已读,然后自动跳转到目标位置。
可以考虑把链接放在头像上。
@残缘,我确实给你发了消息,看起来有竟态条件。
@nzdwlm,你可以参考一下我的这个锁,防止多条消息同时触发时引起的混乱。
https://github.com/hu60t/hu60wap6/blob/master/src/tpl/jhin/js/chatgpt/chatgpt.js#L1142
@老虎会游泳,嗯,但是@残缘,这个例子来说,应该不是所谓竞态条件导致的(这里并不依赖顺序),收到消息后 document.querySelector('#chat-${msg.byuid}')
选择到左边列表中的某一个 DOM
进行操作,并把数据保存在 localStorage
里,如果说AI
和老虎会游泳
同时发了消息,那这两条消息都会存在的,由于是单线程,这里数据也是可以正确保存(在单线程里没有同时)。万万不会出现 A 的 消息 显示在 B 的消息列表里。
另外,该截图里出现 2 个 老虎会游泳
应该是之前的BUG导致的。之前的 BUG 是:打开多个标签页,产生多个 WebSocket 连接,每个连接都收到消息后,都更新 localStorage,导致同一个消息在 localStorage 里有多条,渲染时就渲染了多个
@nzdwlm,Uncaught TypeError: Cannot read properties of null (reading 'addEventListener')
at appendChatList (22780_public_hu60bot.js:172:41)
at 22780_public_hu60bot.js:129:13
at Array.forEach (<anonymous>)
at renderChatList (22780_public_hu60bot.js:125:25)
at initChatWindowData (22780_public_hu60bot.js:100:5)
at initHu60botChat (22780_public_hu60bot.js:96:5)
at startPlugin (22780_public_hu60bot.js:18:5)
at 22780_public_hu60bot.js:654:1