電報ボット経隓、啓瀺、開発のヒント

すぐにポむントを取埗したしょう。 蚘事の内容





行こう



どのようにしおボットを䜜り始めたしたか。 仲人、りェザヌマン、ゟディアック。



泚意 次の段萜にはネタバレが含たれる堎合がありたす。 泚意しおください。



3぀のボットはすべお適切であるこずが刀明し、珟圚、䞀番䞊のstorebot.meに参加しおいたす。 りェザヌマンは数ヶ月間、着実にトップの座を保持しおいたす。



䜜成の簡単な歎史。



開発者にパンを䞎えないでください。クヌルで銬鹿げたこずを蚘入しおみたしょう。 したがっお、Telegramでのボットの発衚に関するニュヌスを無芖するこずは非垞に困難でした。

たず最初に、最初のボットのアむデアを考え出す必芁がありたした。 研究はむンタヌネットの柱であるポルノず猫から始たりたした。

アラブ諞囜では、ポルノサむトがブロックされ、電報でのポルノが利甚できるこずが刀明したした。 この事実は、開発者にずっおポルノボットの魅力を無限に高め、ニッチはすぐに満たされたした。

たた、Seryozhaの印章Seryozhaは䞀般に開発者です。珟圚の蚘事を曞いおいたすはアレルギヌです。



ポルノずアザラシの接点のどこかで、デヌトボットを䜜成するずいうアむデアが生たれたした。 考え盎すこずなく、私たちはMatchmaker_botを䜜成したした-TelegramのTinderの類䌌物telegram.me/matchmaker_bot。

ボットのアむデアはシンプルで矎しいため、写真をアップロヌドしおから他の人の写真を芋るこずができたす。 ナヌザヌが奜きだったが、圌が奜きだった堎合、ボットは連絡先の亀換を可胜にし、死が電報でのチャットからあなたを切り離さない限り 、あなたは幞せに生きるこずができたす 。



私は助けるこずはできたせんが、共有しおいたす。 ボットが最初に起動されたずき、奜き嫌いを数えるコヌドにバグがありたした。 このバグのため、私は数十人の優秀な残忍なむラン人を始めたした。

写真が届いたずいう通知を電報で芋るたびに、目を閉じお写真を削陀するためにSeryozhaに走りたした-誰もがわいせ぀を埅っおいたした。 しかし、瀌儀正しいむラン人は決しお䞋品なものを送りたせんでした-花ず猫の写真だけです。 これらはロマンチックな仲間です。



生涯の最初の2日間、ボットは800人のナニヌクナヌザヌを収集し、1日あたり200人の芖聎者を獲埗したしたが、芖聎者はただ増え続けおいたす。

この蚘事の執筆時点では、1日あたり900人のナニヌクビゞタヌがいたす。



私たちはサむトのSEO最適化のスペシャリストではありたせん。率盎に蚀っお、特別な努力なしに2日間で同様のオヌディ゚ンスを匕き付けるWebサむトを䜜成する方法は想像できたせん。



したがっお、結果は私たちにむンスピレヌションを䞎え、Seryozhaはさらに2、3個のボットを迅速に取埗するこずにしたした。 そのため、倩気予報や星占いを䞎えたり、指定した時間に今日たたは明日の毎日の予報を送信したりするこずができるボットであるWeathermanずZodiacによっお倩気が芋られたしたtelegram.me/weatherman_botおよびtelegram.me/zodiac_bot。



Serezhaは混乱し、5぀の蚀語のボットのロヌカラむズを行い、Weatherボットのために圌は有料の倩気APIを取埗したした。

倚蚀語、予枬粟床、盎感的なむンタヌフェむスにより、突然倩気予報ボットが非垞に人気になりたした。

珟圚、圌は定期的にstorebot.meのトップにおり、Telegramで最もクヌルなボットの堎所に定期的に入り、2000以䞊のナヌザヌ評䟡、5぀星の平均評䟡を持っおいたす。 レビュヌは愛ず厇拝に満ちおいたす。





迅速なボット開発のためにnodejsボットブラザヌラむブラリを䜜成



最初のボットは、むき出しの熱意で偶然に曞かれたした。 しかし、本圓の開発者は理解しおいたす。同じ補品に぀いお䜕床もやらなければならない堎合、フレヌムワヌクのような匂いがし始めたす。 既補のラむブラリやフレヌムワヌクが芋぀からなかったため、Seryozhaは独自のラむブラリを䜜成したした。



Telegram Bot APIでは、http-requestsを䜿甚しお、ナヌザヌずの察話甚のテキストコマンドを送受信できたす。

ク゚リに特別なマヌクアップず倉数を远加しお、たずえば、単玔なキヌボヌドをナヌザヌに衚瀺できたす。





実際、開発者はいく぀かのより耇雑な抜象化の芳点から考えおいたす。



1.ナヌザヌからのテキストメッセヌゞを、コマンドの入力ずボットリク゚ストぞの応答ずいう2぀のタむプに分けたす。


たずえば、ダむアログがありたす

ナヌザヌボット、倩気予報を芋せおください

ボットOK、どの郜垂に

ナヌザヌむルクヌツク

ボットむルクヌツクは寒い...



ダむアログの最初のフレヌズは、ナヌザヌによるダむアログの初期化、コマンドの入力です。 そしお、3番目のフレヌズはすでにボットの特定の質問に察する答えです。



2.ボットのすべおの䜜業は、有限状態マシン䞊を歩いおいたす。


状態コマンドを簡単に移動したり、子状態ず芪状態を䜜成したり、新しい方法で状態に戻るこずができるようにする手段が必芁です。 など 簡単に蚀えば、チヌム間のルヌティングに䟿利なツヌルが必芁です。



3.異なる蚀語で䟿利に䜜業するためのツヌルが必芁です。


別のロゞック、異なる蚀語の別の構成が必芁です。 ロヌカリれヌションファむルを翻蚳のために倖郚委蚗できるように、理想的には、蚀語構成をシンプルにする必芁がありたす。



4.セッションを敎理したす。


぀たり、ボットの䞀意のナヌザヌに関連付けられた特定のデヌタセットを保持したす。



5.チヌムの凊理をいく぀かの段階ミドルりェアに分割したい。


express.jsの原則は誰もが気に入っおいたす:)



これらのアむデアはすべお、 ボットブラザヌラむブラリに組み蟌たれおいたす。 私たちは圌女のために詳现なドキュメントを曞こうずしたした。それはリポゞトリで芋぀けるこずができたす。



その日のボット。 DeloreanBot通知のボットの䟋ずしおボットブラザヌを䜿甚したす。



誰かが歌詞をスキップしたい堎合は、Telegramで動䜜しおいるボットに觊れお、その゜ヌスコヌドをgithubで芋るこずができたす。



残りに぀いおは、実装機胜に぀いお説明したす。

補造されたボットの機胜-ナヌザヌがボットにアラヌムず時間を入力するず、ボットは適切なタむミングで通知を送信したす。

たずえば、ナヌザヌが「1時間で犬ず散歩」ず曞いた堎合、ボットは1時間でリマむンダヌを送信したす。 私たちが元のアむデアであるず䞻匵しないこずにすぐに同意したしょう。 ボットをロシア語ず英語で䜜成したす。



このようなボットを䜜成したり、デバッグしたり、むンタヌフェむスを英語にロヌカラむズしたりするには1日かかりたす。



必芁なもの



1.ナヌザヌコマンドの凊理


これは通垞、ボットブラザヌの基本的な機胜です。 ここでラむブラリのドキュメントを耇補しおも意味がありたせん。 䞀般的な理解のために、小さなコヌドを提䟛したす。 チヌムを登録し、その応答に反応するこずは、通垞次のようになりたす。



//   settings_locale bot.command('settings_locale') .invoke(function (ctx) { //      –     return ctx.sendMessage(' '); }) .answer(function (ctx) { //      . ctx.session.locale = ctx.answer; ctx.setLocale(ctx.answer); return ctx.sendMessage('answer.success').then(function () { //    ,     . return ctx.goBack(); }); }) //      ,      . .keyboard([[ {'': 'ru'}, {'English': 'en'}, ], //   «»  . [{'': function (ctx) { ctx.goBack(); }] ]);
      
      







2.ロヌカリれヌションの組織


私たちはむンタヌフェヌス蚀語を瀺すように人に求めおいるので、ボットで䜜業するずきは正しい蚀語でテキストを衚瀺するのがいいでしょう。



すべおのフレヌズは、「キヌロヌカラむズされた倀」の圢匏でyamlファむルに保存されたす。 この圢匏は、線集するファむルをサヌドパヌティの翻蚳者に提䟛する堎合に䟿利です。 英語の翻蚳ファむルの䟋はここにありたす 。



コヌドを䜿甚しお、これらのファむルを必芁な圢匏のJSONに倉換し、ボットに枡したす。



yamlファむルをjsonに倉換するためのコヌドは科孊的な興味の察象ではありたせんが、それがここにある堎合。

 //      var bot = bb({ key: config.bot.key, redis: config.redis }) //       . .texts(texts.ru, {locale: 'ru'}) .texts(texts.en, {locale: 'en'}) .texts(texts.default);
      
      







その埌、あらゆる堎所のコヌドで、テキストフレヌズの代わりに、察応するロヌカラむズキヌを瀺したす。



テキストメッセヌゞの出力を含むすべおのコヌドは少し倉曎されたす。

このコヌド

 .invoke(function (ctx) { //      –     return ctx.sendMessage(' '); })
      
      





に倉換する

 .invoke(function (ctx) { //      –     return ctx.sendMessage('settings.locale'); })
      
      







3.ナヌザヌのタむムゟヌンを決定したす。


あなたが来お、䞀般垂民に圌の時間垯を䞎えるよう頌むならば、圌はあなたを理解しないかもしれたせん。 しかし、ほがすべおの人間は、自分がいる郜垂の名前に倚少の自信を持っおいたす。 この事実を利甚したす。



したがっお、タむムゟヌンを決定するには、ナヌザヌの堎所を盎接芁求するか、ナヌザヌに郜垂名を入力するように䟝頌する必芁がありたす。 実践は、このアプロヌチが優れおおり、誰も怖がらないこずを瀺しおいたす。



Yandex http-geocoderを䜿甚しお郜垂名を翻蚳したす泚意、キヌを取埗する必芁がありたす。



座暙をtimezonerに送りたす。これにより、ナヌザヌのタむムゟヌンが返されたす。



埮劙な違いがありたす-䞡方のサヌビスには1日あたりのリク゚スト数に制限がありたす。 したがっお

a同じ郜垂のゞオコヌダヌぞのリク゚ストをキャッシュしたす。

b人が正確な䜍眮を入力するず、ゞオコヌダヌを介しおそれを実行し、ナヌザヌの郜垂を取埗し、郜垂の䞭心の座暙をさらに凊理したす-このように、モスクワのすべおのナヌザヌに察しお、タむムゟナヌで1぀の芁求を行うこずができたす。



タむムゟヌンを決定するためのモゞュヌルコヌドはこちらです。



4.ナヌザヌデヌタの保存


以前、ボットブラザヌは特定のナヌザヌに関連付けられたデヌタを長期間保存できるこずに泚意したした。 この機胜はRedisを介しお実装されたす。



Redisのより耇雑なボットでは、少量のナヌザヌセッションデヌタのみを栌玍したすが、バルクはただ本栌的なデヌタベヌスMongoDBなどに配眮する必芁がありたす。



しかし、このボットに぀いおは、Redisのみを実行するこずにしたした。

リポゞトリからのナヌザヌデヌタの読み取りは、次のコマンドを凊理する前に行われ、次のコマンドの凊理サむクル埌にリポゞトリに曞き戻したす。



5.通知を送信する必芁がある瞬間を远跡したす。


他のボットは、特定の時間にナヌザヌにメッセヌゞを送信する必芁がありたす。 これを行うために、プロセスがサヌバヌ䞊で回転し、時間をチェックし、デヌタベヌス内のレコヌドをチェックし、定期的にアラヌトを送信したす。



しかし、このボットに぀いおは、よりクヌルな゜リュヌションが芋぀かりたした。 Redisでは、指定された有効期間を持぀キヌを远加できたす。 キヌが消えるず、Redisは察応するむベントを送信したす。 それだけです。

通知を远加する必芁があるずすぐに、Redisで目的の有効期間を持぀キヌを蚘録し、むベントをリッスンしお、ナヌザヌに通知を送信したす。

コヌド



6.フレヌズで時間たたは日付を怜玢する


英語のフレヌズで時間を調べるこずができる玠晎らしいクロノノヌドラむブラリがありたす。

同様に、ロシア語のコヌドを远加したす。



珟圚、倚かれ少なかれ以䞋を衚しおいたす。



その埌、ボットずデバッグに必芁なすべおのコマンドを慎重にプログラムするだけです。 私たちは同じリポゞトリにあるフルバヌゞョンを芋たす 。



2日間 飛行は予枬可胜です。


DeLoreanを2日前にstorebotに投皿したした。 統蚈



人気のあるボットを䜜成するための普遍的な掚奚事項



䞊蚘で、ボットがボットの評䟡のトップに登り、長い間そこに座っおいるこずを恥知らずに自慢したした。



䞊䜍の地䜍を持぀こずが重芁なのはなぜですか



もちろん、電報は、ボットの評䟡を蚈算する魔法のアルゎリズムを公開したせん。 それにも関わらず、私たちはこの䞻題に぀いおかなり劥圓ず思われる仮説を立おおいたす。



したがっお、ボットの評䟡は、storebotの最近の評䟡に最も䟝存しおいたす。 ボットに最近倚くの肯定的な評䟡5぀星が䞎えられおいる堎合、おそらくボットは評䟡に忍び寄っおいたす。

ボット内のナニヌクなものの数ずその䜿甚の匷床は、ランキングの䜍眮に圱響を䞎えないようです。 それ以倖の堎合、Zodiac_botがどのように評䟡を远い越したかを説明するこずはできたせん。たずえば、超人気のYandex.Pictureボット/



この考えに基づいお、ストアでボットを宣䌝する唯䞀の方法は、ボットのタヌゲットオヌディ゚ンスを混乱させ、ナヌザヌを可胜な限り幞せにするこずではないず結論付けたす。



珟圚、ボットは若くお奇劙なニッチです。 倧半のボットの䞻芁な機胜は、わかりにくいむンタヌフェむスです。

この蚘事の著者は、ボットは開発者のために開発者によっお䜜成されおいるずいう䞻芳的な感芚を持っおいたす。 そしお、䜕らかの理由で、人々のためにボットを曞く人はほずんどいたせん。

開発者向けのボットを䜜成する堎合、ランキングの䞊䜍に䞊げるこずはほずんどできたせん。 プログラマでない人がむンタヌフェむスで混乱し、䜎い評䟡を䞎えるためです。 あなたの垜子。



この点で、プログラマヌ以倖のナヌザヌに䟿利なボットを䜜成する方法に関するいく぀かの明癜な掚奚事項。



コマンドではなくキヌボヌド


はい、チヌムが非垞にクヌルであるこずを知っおいたす。 コン゜ヌルのコマンド、メッセンゞャヌのチヌム-これは幞せではありたせんか

しかし、驚くべきこずに、䞖界の人口のほずんどはチヌムを運転するこずを奜みたせん。

したがっお、掚奚番号1は、ボット祖母を含むで䜜業しおいるずきにナヌザヌが絶察に動けないように、垞に、ボットで䜜業するほがすべおの段階で、可胜なオプションを備えたキヌボヌドをナヌザヌに衚瀺したす。 チヌムをオタクに任せお、喜んでもらいたしょう。



人々に耇雑なこずを尋ねる必芁はありたせん


タむムゟヌンの決定に関するセクションで、この考え方を原則ずしおすでに明らかにしおいたす。 ナヌザヌがボットを操䜜するずきに考えたりクリックしたりする必芁が少なくなればなるほど、ボットが萜ちない可胜性が高くなりたす。



絵文字を自由に䜿甚しおください


ボットの機胜は、魅力的なむンタヌフェむスを䜜成するための少数の衚珟力豊かなツヌルです。 したがっお、アむコンずテキストでボタンを䜜成する機䌚がある堎合は、それを䜿甚する必芁がありたす。

私は倚くの人が䞋品な写真を䜿った文孊的な文章の歪みを奜たないこずを認めおいたすが、絵文字は本圓にテキストむンタヌフェヌスをよりフレンドリヌにしたす。 玠晎らしい䟋が倩気予報です。





吊定的なレビュヌが倧奜き


倚くの吊定的なレビュヌ-補品にずっお最悪の状況ではありたせん。 最も恐ろしい反応は、誰も䜕も䜿甚も曞き蟌みもしないずいうこずです。 これは、真実が䜕をすべきか䞍明であるずころです。

吊定的なレビュヌがある堎合、次のこずができたす。

aボットを終了する

bバグを修正するバグレポヌトの堎合

c吊定的な評䟡の著者に手玙を曞き、ボットに぀いお話す



3぀のアプロヌチすべおを積極的に実践しおいたす。 Seryozhaは、評䟡が䜎い奇劙な䞍可解なフィヌドバックを残したナヌザヌに䜕床も曞いお、䞀緒にバグを芋぀けお修正し、ほずんどの堎合、ナヌザヌはボットに高い評䟡を䞎えるために戻っおきたしたこれは、私たちが知っおいるように、その配垃に貢献しおいたす。



叙情的な䜙談-最も楜しいレビュヌは、デヌトボットのナヌザヌによっお残されたす。



しかし、Mehreganは正しいのですが、魂はどうですか..



ボットの収益化に関する哲孊的掚論



理論的には、1日あたり2000人の芖聎者がいる堎合、少なくずも䜕かを獲埗できるこずを理解しおいたす。 しかし、実際にはその方法がわかりたせん。

今、私たちの頭痛は、倩気ボットのニヌズの高たりです。 圌の聎衆は増加し、倩気の需芁は増加しおおり、それを維持するためのコストも増加しおいたす。 成長が止たったずき-それは明らかではありたせん。



ボットの収益化に察する3぀の理論的なアプロヌチを思い぀きたした。

  1. 寄付のためのボタンを䜜成したす。 このアプロヌチの利点は、非䟵入性です。 短所-ほずんどの堎合、収入はれロに近くなりたす。
  2. 有料サブスクリプション。 たずえば、ボットに1か月間無料で䜿甚できるようにし、ボットのキヌを1ドルで賌入するように䟝頌したす。 長所-絶察に倖に出るこずはありたせん。 マむナス-すべおのナヌザヌを倱う可胜性がありたす。
  3. ボットでの広告。 プラス-獲埗のチャンスがあるようです。 短所-カルマをひどく損なう可胜性がありたす。


私たちは、広告に関するアプロヌチ番号3を開発しようずしおいたす。 Serezhaはadbot.ioボットの広告甚プラットフォヌムを䜜成したした。 プラットフォヌムのりェブサむトadbot.ioでドックを読んでプラットフォヌムを確認できたす 。 これは完党に新しいものですが、ボットのみがあり、広告䞻はたったくいたせん。 これたでのずころこれはすべお実隓であるため、関係者党員が参加するように招埅しおいたす。 ボットに広告亀換が実行可胜かどうかを理解するためだけに、ボットでの広告に同意する裁定人を探したい最初は無料でもよい。



これらのアプロヌチの少なくずも1぀がボットの収益性の向䞊たたは少なくずも䞍採算を可胜にする堎合、ニッチは絶望的ではないようです。 そしお、圌がそれを蚱可しない堎合、ボットはおそらく矎しい抂念ずしお死ぬでしょう。



All Articles