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 라는걸로 좀더 세세한 기능을 만들 수도 있음
함수 기능이기 때문에 여기에 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