function response(room, msg, sender, isGroupChat, replier, imageDB, packageName) {
}
const admin_name = 'adminname'; //채팅초기화 할 관리자 이름.
const admin_hash = '12345678'; //관리자 프로필 해시코드. 채팅방에 "/해시코드"라고 입력해 확인해 볼 수 있음.
const path='sdcard/Chatbot/chatrank_2025_03.txt'; //채팅기록이 저장될 경로
const fs=FileStream;
const Lw='\u200b'.repeat(500); //전체보기 문자
if(!fs.read(path)) fs.write(path, '{}'); //해당 경로에 파일이 없다면 파일 생성
let json=JSON.parse(fs.read(path)); //파일을 JSON 형태로 json변수에 담음
let count=0;
function response(room, msg, sender, isGroupChat, replier, ImageDB, packageName) {
if(sender.includes('\u202E').valueOf()) sender.replace(/\\u202e/gi, '').split('').reverse().join(''); //이름에 반전문자가 들어가 있다면 제거
if(json[room]==undefined) json[room]={};
if(json[room][sender]==undefined) json[room][sender]=0;
json[room][sender]++;
count++;
if(count>200) { //주기적으로 파일 백업
fs.write(path, JSON.stringify(json));
count=0;
}
if(msg=='/해시코드') {
replier.reply(sender+'님의 해시코드: '+ImageDB.getProfileHash());
return;
}
if(msg=='/채팅순위') {
let list=[];
for(i in json[room]) list.push(i+' - 채팅횟수: '+json[room][i]+'회');
replier.reply('['+room+'] 의 채팅순위입니다'+Lw+'\n\n'+list.sort((a,b)=>b.split(' - 채팅횟수: ')[1].split('회')[0]-a.split(' - 채팅횟수: ')[1].split('회')[0]).map(e=> (list.indexOf(e)+1)+'위ㅣ'+e).join('\n\n'));
return;
}
if(msg=='/순위 초기화') {
if(sender!=admin_name || admin_hash != ImageDB.getProfileHash()) { //이름이나 해시코드가 다르다면
replier.reply('권한이 없어 거부되었습니다.');
return;
} else { //이름과 해시코드 모두 일치한다면
json[room] = {};
replier.reply('채팅순위가 초기화되었습니다.');
return;
}
}
}
function onStartCompile() {
fs.write(path, JSON.stringify(json)); //컴파일 시 파일 백업
}