レッディットボットはreddit応答ボットを作る
12566 ワード
PythonでRedditボットを書くにはたくさんのドキュメンテーションがありますが、私はノードの基本的な文書さえ見つけるのに苦労しました.Redditsの公式wikiに記載されているライブラリのいくつかは死んでいるか5年古いです.そこで、シンプルで一般的なユースケースについて書きたいと思います.
まず、頭をhttps://www.reddit.com/prefs/apps そして“ヒットアプリ”-あなたはあなたの個人的なユーザーアカウントを使用していないので、このように行う必要があります.また、あなたのボット(特に召喚することができます)のための新しいRedditアカウントのサインアップする必要があります.このアプリケーションの開発者としてメインアカウントとボットアカウントを追加してください.
アプリケーションを作成するときは、次のようにフィールドに書き込む必要があります.
あなたは心配する必要はありません
一度このような画面が表示されます.
あなたがほんの少しでこの情報を必要とするので、これに注意してください.
このようなもののために、私は非常に使いやすい見つけました
あなたが最初にする必要があります
我々はかなり簡単に修正できます.
これまでのところ、ボットを持っているとコメントを読む-それは素晴らしいスタートです!しかし、それはあなたの聴衆、右と対話するようにしたいですか?では、どのように良いol 'こんにちは世界?チェックアウト:
それはあなたがしなければならないすべてです!🎉
Redditアプリケーションの作成
まず、頭をhttps://www.reddit.com/prefs/apps そして“ヒットアプリ”-あなたはあなたの個人的なユーザーアカウントを使用していないので、このように行う必要があります.また、あなたのボット(特に召喚することができます)のための新しいRedditアカウントのサインアップする必要があります.このアプリケーションの開発者としてメインアカウントとボットアカウントを追加してください.
アプリケーションを作成するときは、次のようにフィールドに書き込む必要があります.
あなたは心配する必要はありません
about uri
or 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);
});
グレート、今だけでは、最新のコメントを参照してくださいに来る.うまくいけば、このsubreddit上のいくつかの記事を作るに十分なredditアカウントを確立している.そうするならば、あなたはあなたの端末が投稿の後、かなり速く彼らといっぱいになるのを見ます.対話する
これまでのところ、ボットを持っているとコメントを読む-それは素晴らしいスタートです!しかし、それはあなたの聴衆、右と対話するようにしたいですか?では、どのように良いol 'こんにちは世界?チェックアウト:
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!');
});
そこには、コメントが来ると、ボットは“こんにちは世界で”それに返信されます…を待つ.それはちょっと話すかもしれませんね.それはちょうど少し迷惑を得るかもしれない.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
(むしろ、あなた自身のボットの名前をチェックする必要があります)とすぐにして、“こんにちは世界!”返事で.それはあなたがしなければならないすべてです!🎉
Reference
この問題について(レッディットボットはreddit応答ボットを作る), 我々は、より多くの情報をここで見つけました https://dev.to/seiyria/making-a-reddit-reply-bot-f55テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol