dutkyo.ts
엔트리 봇을 쉽게 만들 수 있는 deno 라이브러리입니다.
시작하기
deno를 사용하기 위해 deno를 설치하세요.
Mac, Linux curl -fsSL https://deno.land/install.sh | sh
Windows(PowerShell) iwr https://deno.land/install.ps1 -useb | iex
만약 설치가 되지 않는다면 관리자 권한으로 실행하세요.
코드를 실행할 폴더를 만드세요.
vscode 사용자라면 deno 확장을 설치하고, .vscode 폴더를 추가하세요.
.vscode 폴더 안에 settings.json 파일을 추가하고 다음을 입력하고 저장합니다.
{
"deno.enable": true,
"deno.lint": true,
"deno.unstable": true
}이제, 코드를 작성할 .ts 파일을 만드세요.
import { Client } from "https://deno.land/x/dutkyo/mod.ts";
const bot = new Client();
bot.on("ready", (d) => {
console.log(`hello, ${d.bot.nickname}`);
});
bot.on("message", (d) => {
if (d.content == "!hello") {
d.reply(`hello, ${d.writer.nickname}`);
}
});
bot.login("id", "password");봇의 id와 password를 입력하고, 실행하세요.
deno run --allow-all filename.ts
이제 dutkyo.ts를 사용하기 위한 모든 준비가 끝났습니다. 축하드려요!
메시지를 보낸 유저의 정보를 확인하기
메시지를 보낸 사람의 작품 목록을 확인하고 싶으신가요?
dutkyo.ts는 엔트리 api에 간편하게 접근할 수 있는 함수를 제공합니다.
d.user.getprojectlist(d.writer.id).then((list) => {
console.log(list);
});이렇게 하면, 메시지를 보낸 사람의 작품 리스트를 array 형태로 간단하게 확인할 수 있습니다.
dutkyo.ts에서 제공하는 값들은 다음과 같습니다:
id
name
user {
id
username
nickname
profileImage {
id
filename
imageType
}
}
thumb
isopen
isPracticalCourse
category
categoryCode
created
updated
special
isForLecture
isForStudy
isForSubmit
hashId
complexity
staffPicked
ranked
visit
likeCnt
comment메시지를 보낸 유저의 누적 조회수, 좋아요, 댓글을 보고 싶다고요?
d.user.getprojectlist(d.writer.id).then((list) => {
let totalLikeCnt: number = 0;
let totalVisitCnt: number = 0;
let totalCommentCnt: number = 0;
for (const project of list) {
totalLikeCnt += project.likeCnt;
totalVisitCnt += project.visit;
totalCommentCnt += project.comment;
}
d.reply(`❤️ ${totalLikeCnt}, 💬 ${totalCommentCnt}, 👁️ ${totalVisitCnt}`);
});10줄로 짜증나고 귀찮은 graphql 쿼리 없이 간단하게 누적 조회수, 좋아요, 댓글을 출력할 수 있습니다.
글 작성
최근엔 글 작성 봇이 많이 사라졌지만
상황에 따라서 (예를 들어 홍보 매크로) 글 작성이 필요할 수 있습니다.
편리하게도 ready 이벤트가 반환하는 값에 글을 작성할 수 있는 함수가 있습니다.
bot.on("ready", (d) => {
d.discuss.write("아주 멋진 작품: https://example.com/");
setInterval(() => {
d.discuss.write("아주 멋진 작품: https://example.com/");
}, 600000);
});이렇게 하면 불규칙적이고 짜증나게 작품 홍보를 할 필요가 없습니다.
username, nickname으로 유저 찾기
nickname으로 userid를 찾고 싶다고요? 가능합니다!
d.user.finduserbynickname("엔트리").then((d) => {
console.log(d);
//565fdb0d1328dea8087009b5
});
d.user.finduserbyusername("entry").then((d) => {
console.log(d);
//53eef21dce8dd2c54f0cb721
});이제 직접 유저의 id를 찾을 필요가 없습니다.