Reddit 봇 Reddit 응답 봇 만들기
12772 단어 botnoderedditjavascript
Reddit 애플리케이션 만들기
먼저 https://www.reddit.com/prefs/apps으로 가서 "앱 만들기"를 누르세요. reddit이 개인 사용자 계정을 사용하지 않도록 이렇게 해야 합니다. 또한 봇을 위한 새 reddit 계정에 가입해야 합니다(특히 소환할 수 있는 경우). 이 애플리케이션에서 기본 계정과 봇 계정을 개발자로 추가했는지 확인하세요.
앱을 만들 때 다음과 유사하게 필드를 채워야 합니다.
about uri
또는 redirect uri
필드는 사용하지 않을 것이기 때문에 걱정할 필요가 없으므로 원하는 대로 입력할 수 있습니다.들어가면 다음과 같은 화면이 나타납니다.
잠시 후에 이 정보가 필요하므로 이 점을 기록해 두십시오.
노드 프로젝트 시작
이와 같은 경우 사용하기가 매우 쉽다는 것을 알았습니다
snoostorm
( snoowrap
주변의 래퍼). 이 라이브러리를 사용하면 주석이 들어올 때 매우 간단하게 얻을 수 있습니다.먼저
snoowrap
개체를 만든 다음 이를 사용하여 CommentStream
개체를 만들어야 합니다. 이를 위해서는 reddit 봇 사용자 이름, 암호, 애플리케이션 암호 및 애플리케이션 ID가 필요합니다. 고유한 사용자 에이전트를 지정해야 하므로 my-node-js-bot
와 같이 이름을 지정해야 합니다. 따라서 다음과 같이 구성하십시오(내 것은 위의 그림을 기반으로 구성됨).const Snoowrap = require('snoowrap');
const { CommentStream } = require('snoostorm');
const client = new Snoowrap({
userAgent: 'my-node-js-bot',
clientId: 'qR6rJnQ7sEJZDw',
clientSecret: 'OCoo9pYnlC2K6fxQQxbcIPQ5MA4',
username: 'myusernamebutactuallybot',
password: 'mypasswordbutactuallybot'
});
이 클라이언트 개체를 사용하면 마침내 새로운 의견을 듣기 시작할 수 있습니다! /r/testingground4bots로 이동하여 스레드에 들어가거나 자신만의 스레드를 만드십시오. 그런 다음 몇 가지 코드를 추가하여 댓글 보기를 시작합니다.
// pollTime is 10000 because reddit is very strict on posting too frequently
// at first, you'll only be able to post once every 10 minutes, so make sure you get it right!
const comments = new CommentStream(client, {
subreddit: 'testingground4bots',
limit: 10,
pollTime: 10000
});
comments.on('item', (item) => {
console.log(item);
});
봇을 시작하면 터미널에 수많은 댓글이 표시됩니다. 그 이유가 궁금할 수 있습니다. 아직 새로운 것이 들어오는 것을 본 적이 없습니다! 음,
client
는 봇을 시작할 때 항상 첫 번째 X 항목(이 경우 10)을 제공한 다음 거기에서 추적합니다.꽤 쉽게 고칠 수 있습니다.
// reddits api doesn't use millis
const BOT_START = Date.now() / 1000;
const comments = new CommentStream(client, {
subreddit: 'testingground4bots',
limit: 10,
pollTime: 10000
});
comments.on('item', (item) => {
if(item.created_utc < BOT_START) return;
console.log(item);
});
좋습니다. 이제 들어오는 최신 댓글만 볼 수 있습니다. 이 하위 레딧에 게시물을 올릴 수 있을 만큼 충분한 레딧 계정을 구축하셨기를 바랍니다. 그렇게 하면 게시 후 상당히 빠르게 터미널이 채워지는 것을 볼 수 있습니다.
상호 작용하기
지금까지 봇이 있고 댓글을 읽습니다. 좋은 시작입니다! 하지만 청중과 상호 작용하기를 원하십니까? 그럼 좋은 세상 안녕은 어때? 확인 해봐:
const BOT_START = Date.now() / 1000;
const comments = new CommentStream(client, {
subreddit: 'testingground4bots',
limit: 10,
pollTime: 10000
});
comments.on('item', (item) => {
if(item.created_utc < BOT_START) return;
item.reply('hello world!');
});
여기에서 댓글이 들어올 때마다 봇이 "hello world!"라고 답장을 보냅니다. 잠깐만요... 좀 자주 얘기할 수도 있잖아요, 그렇죠? 조금 짜증날 수도 있습니다. Reddit은 귀하의 봇이 언급될 때 구체적으로 회신할 것을 권장하므로 매우 쉬운 방법이 있습니다.
const BOT_START = Date.now() / 1000;
const canSummon = (msg) => {
return msg && msg.toLowerCase().includes('/u/myusernamebutactuallybot');
};
const comments = new CommentStream(client, {
subreddit: 'testingground4bots',
limit: 10,
pollTime: 10000
});
comments.on('item', (item) => {
if(item.created_utc < BOT_START) return;
if(!canSummon(item.body)) return;
item.reply('hello world!');
});
거기! 따라서 이것이 하는 일은 봇이 찾은 댓글이 실제로 봇 자체를 참조하는지 확인하는 것입니다. 이
canSummon
기능은 기본 검사를 수행하여 봇이 많은 사람들의 댓글을 잘못 스팸하지 않도록 합니다. 지금 /u/myusernamebutactuallybot
라는 댓글을 작성하면(오히려 자신의 봇 이름을 확인해야 함) 잠시 후 "hello world!"라는 답장이 표시됩니다. 답변으로.그게 당신이해야 할 전부입니다! 🎉
Reference
이 문제에 관하여(Reddit 봇 Reddit 응답 봇 만들기), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/seiyria/making-a-reddit-reply-bot-f55텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)