데노에서 롤러로 스크랩을 던집니다.
deno
에서 무엇을 할지 목표를 세웠기 때문에 간단하지만 슬랙 봇을 만들었다.deno 설정
참고azukiazasa 기사
Hello World!
를 서버로 반납하면 문제없습니다.vscode를 사용하는 사람은 확장 기능을 잘 추가하십시오. 오류가 발생했습니다.
완성품
slack 채널에 텍스트 보내기
slack Token을 만들고 bot을 초대합니다.
일단 토큰을 가져올게요.
여기 기사.에서 보듯이 가져올 수 있을 거예요.
Token을 잘 사용할 수 있는지 확인하고 채널에 bot을 초대하세요.
코드
이쪽 코드를 참고했습니다.
기대고 싶지 않아서 다시 썼어요.
connect_slack.ts
export const sendMessage = async(token: string, channel: string, text: string) => {
const response = await fetch('https://slack.com/api/chat.postMessage', {
method: 'POST',
headers: {
'Content-Type': 'application/json; charset=UTF-8',
'Authorization': `Bearer ${token}`,
},
body: JSON.stringify({
channel,
text,
as_user: true,
}),
});
return response;
}
index.tsimport { sendMessage } from './connect_slack.ts';
import 'https://deno.land/x/dotenv/load.ts';
const slacktoken = Deno.env.get('SLACK_TOKEN')
if (slacktoken) {
await sendMessage(slacktoken, '#チャンネル名', 'hello world!');
}
나는 별다른 일을 하지 않고 가져왔다slack_token
.envSLACK_TOKEN={とってきたslack_token}
이렇게 넣어주세요.gitignore 설정 잘 해주세요.
$ deno run --allow-net --allow-read --allow-env index.ts
는 지정된 채널.env
에 보내야 한다.데노에 권한
hello world!
등을 명확히 표시해야 한다.https://deno.land/manual/getting_started/permissions
커튼으로 데이터를 추출하다
이번에 우리는 github 유행 트렌드 중의 창고를 선택했다.
이것은 주의 사항이니 주의해 주십시오
나가사키 시립 중앙도서관 사건
웹 덮어쓰기 고려 사항 요약
코드
참고했어.
위의 보도document의 유형은ny이지만, 그러면 오류가 발생하여 움직일 수 없습니다.
github.ts
import { DOMParser } from 'https://deno.land/x/deno_dom/deno-dom-wasm.ts';
const url = 'https://github.com/trending';
let url_list: string[] = [];
const url_prefix = 'https://github.com/'
const res = await fetch(url);
const html = await res.text();
const doc = new DOMParser().parseFromString(html, 'text/html');
const ref = doc?.querySelector('#js-pjax-container>.position-relative>.Box');
export const scrapingRepo = (): string[] => {
const repositories = ref?.querySelectorAll('div>.Box-row>h1>a');
if (repositories) {
for(const repositoty of repositories) {
url_list.push(url_prefix + repositoty.textContent.replace('\n\n', '').replace(/\s+/g, '').trim())
}
}
return url_list
}
나는 더 좋은 방법이 있을 것이라고 생각했지만, 이러한 느낌은 창고의 URL을 배열에 따라 반환했다.Blocks로 보내려고 sendMessage 함수의 매개 변수를 변경합니다.
Block kitsPLAID 기사에 대해서는 쉽게 알 수 있습니다.
connect_slack.ts
export const sendMessage = async(token: string, channel: string, blocks: any) {}
slack.tsimport { sendMessage } from './connect_slack.ts';
import { scrapingRepo } from './github.ts';
import 'https://deno.land/x/dotenv/load.ts';
const array = await scrapingRepo()
const slacktoken = Deno.env.get('SLACK_TOKEN')
if (slacktoken) {
for (let i = 0; i < 10; i++) {
await sendMessage(slacktoken, '#bot_test',
[
{
'type': 'context',
'elements': [
{
'type': 'mrkdwn',
'text': `No.${i+1} / ${array[i]}`
}
]
},
]
);
}
}
이렇게 다시 한 번 시도해서 슬랙에 보내면 됩니다.프로그램 설계
얻기 힘든 기회니까 디자인하고 싶어요.
deno deploy스케줄러를 사용하고 싶어서 이번에 헤로쿠를 디자인하고 싶어요.
이 보도에 따라 수정하고 미루다
이 보도에 따라 일정을 설정하면 완성된다.
git를 만져봤으면 괜찮을 거야.
최후
deno는 처음으로 사용해 보았지만,ts를 건드린 사람이라면 문제 없이 쓸 수 있을 것 같습니다.
node_modules와 ts 없이 처음부터 사용할 수 있는 체험이 좋고, 후발 언어인 만큼 기준deno_lint 등이 있어 앞으로도 계속 사용하고 싶다.
만약 틀린 곳이 있으면 저에게 알려 주세요.
Reference
이 문제에 관하여(데노에서 롤러로 스크랩을 던집니다.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://zenn.dev/mmomm/articles/59478e8046dd196d84f3텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)