Skip to content

Latest commit

 

History

History
193 lines (179 loc) · 7.62 KB

Contributor.md

File metadata and controls

193 lines (179 loc) · 7.62 KB

편집시 도움말

[이 봇이 사용하는 언어]

http://www.lua.org/pil/contents.html
Lua (luvit)
이유 :
무시무시하게 빠르고 가벼움, 저사양 기기에 돌리기 적합
바로바로 리로드 가능
C 랑 동기화가 쉬움
js 랑 가까움 (그래서 js 모듈 이식작이 많음)
비동기IO 로 처리 가능
String 같은 라이브러리 포함되니 문서 확인

[편집 주의 사항]

편집기 열 때 가능하면 개속해서 git pull 받아서 온라인 스토리지로 부터
파일을 받아오기
세미 콜론이 필요한곳에는 꼭 ; 를 찍어서 오류 안나도록 하기
-- ! Automatically generated ! 가 위 아래로 있는 부분은 건들지 말기
나중에 고칠 필요가 있는 부분은 !!REVIEW NEEDED!! 를 붇여놓아서 검색으로 찾을 수 있게 만들어주세요! 그리고 뭘 고쳐야 하는지도 좀 적어주면 좋음 👍

[봇 컨트롤 명령어]

!!!sync : 내가 올린 명령어를 적용
!!!reload : 봇을 한번 껏다 켬
!!!help : 이외에 더 많은 명령어를 볼려면 사용

[여러개 감싸기]

여러개가 필요한경우 {} 로 감싸서 , 로 하나하나 분리함
예 : {"안녕","안뇽","ㅎㅇ"}

[주석쓰기]

그냥 노트가 필요한경우 -- 를 붇여서 노트를 사용 가능함
예 : -- 노트하기

[말한사람 언급하기]

만약 말한사람 언급이 필요한경우 {#:UserName:#} 을 사용할 수 있음
예 : "안녕하세요 {#:UserName:#} 님!"

[func 를 이용한 세부 반응]

나중에 가면 func 라는걸로 좀더 세세한 기능을 만들 수도 있음
함수 기능이기 때문에 여기에 string 라이브러리를 쓰거나
렌덤 라이브러리를 쓰거나 할 수도 있음
예 :
-- 주사위 굴리기

reply = function(message,args,Content)
    return ("나온 수는 %d 이에요!"):format(random(1,6));
end;

당연히 여러 반응과 묶을수도 있음

reply = {  
    function(message,args,Content)
        return ("나온 수는 %d 이에요!"):format(random(1,6));
    end,
    "주사위를 찾지 못했어요",
    "어이쿠! 주사위를 떨어트렸어요",
    function(message,args,Content)
        return ("(대구르르르...) 나온 수는 %d 이에요!"):format(random(1,6));
    end
};

[글자 반복]

금사향! 금사향! 금사향! 처럼 반복되는걸 만들려면
string.rep("반복할 글자",1)
을 쓸 수 있음, 반복할 글자에는 원하는거 집어넣고 숫자부분엔
반복할 수를 추가하면 됨
예 :

reply = {"학교폭력 멈춰!",string.rep("멈춰! ",20)};

단독으로도 사용 가능

reply = string.rep("멈춰! ",20);

[호감도 오르거나 내리는 반응 (선택적 사항)]

호감도 상승 반응

["끝말잇기"] = {
    alias = "끝말 잇기";
    reply = "크시랑 하세요";
    love = 1; -- 호감도 1 상승
};

호감도 하락 반응

["개새끼"] = {
    reply = "나빴어";
    love = -2; -- 호감도 2 하락
};

렌덤하게 호감도가 주어지는 반응

["안녕"] = {
    reply = "안녕하세요! {%%:UserName:%%} 님!";
    love = function()

    end
};

[몇 초 뒤 바뀌는 반응]

아래처럼 함수 기능을 사용할 수 있음, reply 에 안넣고 func 에 넣어서
주의할껀 reply 에 함수 썼으면 msg 를 리턴하는게 필요함
msg (메시지 개체) 받아서 편집도 가능함,
아래 숫자 부분(스캐쥴러에 던지는 부분에서) 500 이거는 마이크로 초로 씀
즉 500 = 0.5 (1ms = 0.001s)
리플 부분에 함수 지정

["ㅉㅉ"] = {
    alias = {"쯧...","쯧.","쯧..","쯔읏","","","쯧쯧"};
    reply = {
        function (msg)
            local newMsg = msg:reply("~~저저 꼰대 쉨~~");
            runSchedule(500,function ()
                newMsg:setContent("아! 아무것도 아니야 ㅎㅎ");
            end);
            return newMsg;
        end,
    };
};

아에 func 에 적용

["ㅉㅉ"] = {
    alias = {"쯧...","쯧.","쯧..","쯔읏","","","쯧쯧"};
    reply = "~~저저 꼰대 쉨";
    func = function (msg)
        runSchedule(500,function ()
            msg:setContent("아! 아무것도 아니야 ㅎㅎ");
        end);
    end;
};

[커맨드 세부사항]

{
    disableDm = bool; -- DM 에서 이 명령어를 쓸 수 있는지 여부 (true = 불가능,false = 가능)
    alias = table[array]/str; -- 다른 명령어로도 똑같은 기능 내도록
    reply = table[array]/str; -- 콜백
    func  = function(replyMsg,message,args,{
    	user = user:table; -- 메시지 워너
    	channel = channel:table; -- 메시지 채널
    	isDm = bool; -- 디엠인가 여부
    	loveText = string; -- 표시되어야할 호감도 바닥글 문자
        commandName = string; -- 이 커맨드 이름
        rawCommandText = string; -- 접두사를 제외한 스트링
        prefix = string; -- 접두사(사용된)
        rawArgs = string; -- args 스트링 (커스텀 분석용)
        rawCommandName = string; -- 커맨드 이름 (앞에 무시된거 포함됨)
        self = Command:table; -- 지금 이 커맨드 개체를 반환
        loadUserData = func; -- 유저 데이터 테이블 가져오기
        saveUserData = func; -- 유저 데이터 저장하기 (넘겨 받은 테이블 고치고 수행)
        isPremium = func; -- 프리미엄 상태 확인
    }); -- 함수
    love = 1; -- love 주는 정도 (1시간 쿨탐 가짐, 선택사항)
    registeredOnly = bool/string; -- (선택사항, 데이터가 있는 사람만 써짐.
                                  --  스트링이면 데이터 없을때 표시됨)

    -- 함수를 이용한 가변적인 결과
    reply = func(message,args,{위와(func 의 가장 뒤 인자) 동일한 테이블});
    love = function(userId) -- 렌덤적인 값을 반환 할 수 있음 (선택사항)
        return random(1,3);
    end; -- 보통 그냥 defaultLove; 또는 rmLove; 를 넘김
};

[다른 모듈 설명]

json : 루아 테이블을 json 으로 인코딩/디코딩 => https://luvit.io/api/json.html
random : 여러 난수를 섞은 렌덤함수, random(최소값,최대값)
client : discordia 모듈중 client 부분 => https://github.com/SinisterRectus/Discordia/wiki/Client
enums : discordia 모듈중 enums 부분 => https://github.com/SinisterRectus/Discordia/wiki/Enumerations
discordia : discordia 모듈 참조 => https://github.com/SinisterRectus/Discordia
logger : 로거용 모듈
+ trace : 추적 (디버깅)
+ debug : 디버그
+ info : 정보 (기본적으로 이거 쓰는걸 추천)
+ warn : 경고 (오류는 아닌데 위험사항)
+ error : 오류 (처리 할 수 없는 사항)
+ fatal : 치명 (luvit 을 죽일만큼 심각한 사항)
makeId : 랜덤한 18자 아이디를 만드는 함수, UUID 처럼 활용 가능 [lib/makeId.lua 와 연결]
urlCode : 한글을 url 용으로 변환, [lib/urlCode.lua 와 연결]
strSplit : 문자를 어떤 기준으로 나누는 함수 [lib/stringSplit.lua 와 연결]
ACCOUNTData : 계정 정보 담긴 테이블 !사용 ㄴㄴ! runSchedule : ms 초 뒤에 함수 실행시키는 함수 (루틴)
ffi : C 코드 가져와서 바인딩 하는 라이브러리 => https://luajit.org/ext_ffi.html
timer : luvit 의 timer 모듈 => https://luvit.io/api/timer.html
fs : 파일 시스템 (luvit 내장) => https://luvit.io/api/fs.html
thread : luvit 의 thread 모듈 => https://luvit.io/api/thread.html