[feat] time related syntaxes

This commit is contained in:
kwaroran
2023-08-04 17:20:01 +09:00
parent 729b13eb9e
commit 418ea31664
4 changed files with 92 additions and 5 deletions

View File

@@ -69,13 +69,15 @@
cha.push({
role: 'user',
data: processScript(char,messageInput,'editinput')
data: processScript(char,messageInput,'editinput'),
time: Date.now()
})
}
else{
cha.push({
role: 'user',
data: messageInput
data: messageInput,
time: Date.now()
})
}
}

View File

@@ -2,7 +2,7 @@ import DOMPurify from 'isomorphic-dompurify';
import showdown from 'showdown';
import { Marked } from 'marked';
import { DataBase, type Database, type character, type groupChat } from './storage/database';
import { DataBase, type Database, type Message, type character, type groupChat } from './storage/database';
import { getFileSrc } from './storage/globalApi';
import { processScript, processScriptFull } from './process/scripts';
import { get } from 'svelte/store';
@@ -442,6 +442,88 @@ const matcher = (p1:string,matcherArg:matcherArg) => {
case 'none':{
return ''
}
case 'time':{
if(chatID === -1){
return "[Cannot get time]"
}
const selchar = db.characters[get(selectedCharID)]
const chat = selchar.chats[selchar.chatPage]
const message = chat.message[chatID]
if(!message.time){
return "[Cannot get time, message was sent in older version]"
}
const date = new Date(message.time)
//output time in format like 10:30 AM
return date.toLocaleTimeString()
}
case 'date':{
if(chatID === -1){
return "[Cannot get time]"
}
const selchar = db.characters[get(selectedCharID)]
const chat = selchar.chats[selchar.chatPage]
const message = chat.message[chatID]
if(!message.time){
return "[Cannot get time, message was sent in older version]"
}
const date = new Date(message.time)
//output date in format like Aug 23, 2021
return date.toLocaleDateString()
}
case 'idle_duration':{
if(chatID === -1){
return "[Cannot get time]"
}
const selchar = db.characters[get(selectedCharID)]
const chat = selchar.chats[selchar.chatPage]
//get latest user message
let pointer = chatID
let pointerMode: 'findLast'|'findSecondLast' = 'findLast'
let message:Message
let previous_message:Message
while(pointer >= 0){
if(chat.message[pointer].role === 'user'){
if(pointerMode === 'findLast'){
message = chat.message[pointer]
pointerMode = 'findSecondLast'
}
else{
previous_message = chat.message[pointer]
break
}
}
pointer--
}
if(!message){
return '[No user message found]'
}
if(!previous_message){
return '[No previous user message found]'
}
if(!message.time){
return "[Cannot get time, message was sent in older version]"
}
if(!previous_message.time){
return "[Cannot get time, previous message was sent in older version]"
}
console.log(message.time)
console.log(previous_message.time)
let duration = message.time - previous_message.time
//output time in format like 10:30:00
let seconds = Math.floor(duration / 1000)
let minutes = Math.floor(seconds / 60)
let hours = Math.floor(minutes / 60)
seconds = seconds % 60
minutes = minutes % 60
//output, like 1:30:00
return hours.toString() + ':' + minutes.toString().padStart(2,'0') + ':' + seconds.toString().padStart(2,'0')
}
}
const arra = p1.split("::")
if(arra.length > 1){

View File

@@ -614,7 +614,8 @@ export async function sendChat(chatProcessIndex = -1,arg:{chatAdditonalTokens?:n
db.characters[selectedChar].chats[selectedChat].message.push({
role: 'char',
data: "",
saying: currentChar.chaId
saying: currentChar.chaId,
time: Date.now()
})
while(abortSignal.aborted === false){
const readed = (await reader.read())
@@ -655,7 +656,8 @@ export async function sendChat(chatProcessIndex = -1,arg:{chatAdditonalTokens?:n
db.characters[selectedChar].chats[selectedChat].message.push({
role: msg[0],
data: result,
saying: currentChar.chaId
saying: currentChar.chaId,
time: Date.now()
})
db.characters[selectedChar].reloadKeys += 1
await sayTTS(currentChar, result)

View File

@@ -662,6 +662,7 @@ export interface Message{
data: string
saying?: string
chatId?:string
time?: number
}
interface AINsettings{