A A
[Coding-javascript] 채팅순위 코드

 

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)); //컴파일 시 파일 백업
}

'> Coding > Java Script' 카테고리의 다른 글

[Coding-javascript] GPT-연동  (0) 2025.03.02
[Coding-javascript] 날씨 조회  (0) 2025.03.02
[Coding-javascript] 맛집추천  (0) 2025.03.02
[Coding-javascript] 넌센스 퀴즈  (0) 2025.03.02
[Coding-javascript] 야구순위  (0) 2025.03.02