Telegram bot kwa uteuzi wa kibinafsi wa makala kutoka kwa Habr

Kwa maswali kama "kwanini?" kuna nakala ya zamani - Nyakati za asili za Geektimes - kufanya nafasi iwe safi zaidi.

Kuna vifungu vingi, kwa sababu za kibinafsi baadhi yao sipendi, na baadhi, kinyume chake, ni huruma kuruka. Ningependa kuboresha mchakato huu na kuokoa muda.

Nakala hapo juu ilipendekeza mbinu ya uandishi wa kivinjari, lakini sikuipenda sana (ingawa nimeitumia hapo awali) kwa sababu zifuatazo:

  • Kwa vivinjari tofauti kwenye kompyuta/simu yako, inabidi uisanidi tena, ikiwezekana.
  • Kuchuja vikali na waandishi sio rahisi kila wakati.
  • Tatizo la waandishi ambao hutaki kukosa makala zao, hata kama zinachapishwa mara moja kwa mwaka, halijatatuliwa.

Kuchuja kujengwa kwenye tovuti kulingana na ukadiriaji wa vifungu sio rahisi kila wakati, kwani nakala zilizobobea sana, licha ya thamani yao, zinaweza kupokea ukadiriaji wa kawaida.

Hapo awali, nilitaka kutoa malisho ya RSS (au hata kadhaa), na kuacha vitu vya kupendeza tu hapo. Lakini mwishoni, ikawa kwamba kusoma RSS hakuonekana kuwa rahisi sana: kwa hali yoyote, kutoa maoni / kura kwa makala / kuiongeza kwa vipendwa vyako, unapaswa kupitia kivinjari. Ndiyo sababu niliandika bot ya telegram ambayo hutuma makala ya kuvutia kwangu katika ujumbe wa kibinafsi. Telegramu yenyewe hufanya muhtasari mzuri kutoka kwao, ambao, pamoja na habari kuhusu mwandishi/ukadiriaji/maoni, inaonekana kuwa ya kuelimisha kabisa.

Telegram bot kwa uteuzi wa kibinafsi wa makala kutoka kwa Habr

Chini ya kukata kuna maelezo kama vile vipengele vya kazi, mchakato wa kuandika na ufumbuzi wa kiufundi.

Kwa kifupi kuhusu bot

Hifadhi: https://github.com/Kright/habrahabr_reader

Bot kwenye telegraph: https://t.me/HabraFilterBot

Mtumiaji huweka ukadiriaji wa ziada kwa lebo na waandishi. Baada ya hapo, kichujio kinatumika kwa makala - ukadiriaji wa makala kuhusu HabrΓ©, ukadiriaji wa mtumiaji wa mwandishi na wastani wa ukadiriaji wa mtumiaji kwa lebo huongezwa. Ikiwa kiasi ni kikubwa kuliko kizingiti kilichobainishwa na mtumiaji, basi makala hupitisha kichujio.

Lengo la upande wa kuandika bot lilikuwa kupata furaha na uzoefu. Isitoshe, nilijikumbusha hivyo mara kwa mara Mimi si Google, na kwa hivyo mambo mengi hufanywa kwa urahisi na hata kwa utangulizi iwezekanavyo. Walakini, hii haikuzuia mchakato wa kuandika bot kuchukua miezi mitatu.

Ilikuwa majira ya joto nje

Julai ilikuwa inaisha, na niliamua kuandika bot. Na sio peke yake, lakini na rafiki ambaye alikuwa akijua scala na alitaka kuandika kitu juu yake. Mwanzo ulionekana kuahidi - nambari itakatwa na timu, kazi ilionekana kuwa rahisi na nilidhani kuwa katika wiki kadhaa au mwezi bot itakuwa tayari.

Licha ya ukweli kwamba mimi mwenyewe nimekuwa nikiandika msimbo kwenye mwamba mara kwa mara kwa miaka michache iliyopita, hakuna mtu anayeona au kutazama msimbo huu: miradi ya pet, kupima mawazo fulani, data ya awali, kusimamia dhana fulani kutoka kwa FP. Nilivutiwa sana na jinsi msimbo wa uandishi katika timu unavyoonekana, kwa sababu nambari kwenye mwamba inaweza kuandikwa kwa njia tofauti sana.

Nini kingeweza kwenda hivyo? Hata hivyo, tusikimbilie mambo.
Kila kitu kinachotokea kinaweza kufuatiliwa kwa kutumia historia ya ahadi.

Mtu anayemjua aliunda hazina mnamo Julai 27, lakini hakufanya chochote kingine, kwa hivyo nilianza kuandika nambari.

Julai 30

Kwa ufupi: Niliandika uchanganuzi wa mlisho wa rss wa Habr.

  • com.github.pureconfig kwa kusoma aina za usanidi moja kwa moja kwenye madarasa ya kesi (iligeuka kuwa rahisi sana)
  • scala-xml kwa kusoma xml: tangu awali nilitaka kuandika utekelezaji wangu mwenyewe kwa rss feed, na rss feed iko katika muundo wa xml, nilitumia maktaba hii kwa kuchanganua. Kwa kweli, uchanganuzi wa RSS pia ulionekana.
  • scalatest kwa vipimo. Hata kwa miradi midogo, majaribio ya kuandika huokoa muda - kwa mfano, wakati wa kurekebisha xml uchanganuzi, ni rahisi kuipakua kwenye faili, kuandika vipimo na kusahihisha makosa. Wakati mdudu baadaye ulionekana kwa kuchanganua html fulani ya kushangaza na herufi batili za utf-8, iligeuka kuwa rahisi zaidi kuiweka kwenye faili na kuongeza jaribio.
  • waigizaji kutoka Akka. Kwa kusudi, hawakuhitajika kabisa, lakini mradi huo uliandikwa kwa kufurahisha, nilitaka kuwajaribu. Kama matokeo, niko tayari kusema kwamba niliipenda. Wazo la OOP linaweza kutazamwa kutoka upande mwingine - kuna watendaji ambao hubadilishana ujumbe. Kinachovutia zaidi ni kwamba unaweza (na unapaswa) kuandika msimbo kwa njia ambayo ujumbe hauwezi kufika au usichakatwa (kwa ujumla, wakati akaunti inaendeshwa kwenye kompyuta moja, ujumbe haupaswi kupotea). Mwanzoni nilikuwa nikikuna kichwa changu na kulikuwa na takataka kwenye msimbo na watendaji wanaojiandikisha, lakini mwishowe nilifanikiwa kupata usanifu rahisi na wa kifahari. Nambari iliyo ndani ya kila muigizaji inaweza kuchukuliwa kuwa ya uzi mmoja; mwigizaji anapoanguka, acca huianzisha tena - matokeo yake ni mfumo unaostahimili makosa.

9 Agosti

Niliongeza kwenye mradi scala-scrapper kwa kuchanganua kurasa za html kutoka kwa Habr (kutoa taarifa kama vile ukadiriaji wa makala, idadi ya alamisho, n.k.).

Na Paka. Wale kwenye mwamba.

Telegram bot kwa uteuzi wa kibinafsi wa makala kutoka kwa Habr

Kisha nikasoma kitabu kuhusu hifadhidata zilizosambazwa, nilipenda wazo la CRDT (aina ya data iliyoigwa isiyo na migogoro, https://en.wikipedia.org/wiki/Conflict-free_replicated_data_type, habri), kwa hivyo nilichapisha aina ya kikundi cha ubadilishanaji kwa habari kuhusu makala kuhusu Habre.

Kwa kweli, wazo ni rahisi sana - tuna counters kwamba mabadiliko monotonically. Idadi ya matangazo inakua polepole, kama vile idadi ya pluses (pamoja na idadi ya minuses). Ikiwa nina matoleo mawili ya habari kuhusu kifungu, basi ninaweza "kuunganisha kuwa moja" - hali ya kihesabu ambacho ni kubwa inachukuliwa kuwa muhimu zaidi.

Semigroup inamaanisha kuwa vitu viwili vilivyo na habari kuhusu kifungu vinaweza kuunganishwa kuwa kimoja. Commutative inamaanisha kuwa unaweza kuunganisha A + B na B + A, matokeo hayategemei agizo, na mwishowe toleo jipya zaidi litabaki. Kwa njia, pia kuna ushirika hapa.

Kwa mfano, kama ilivyopangwa, rss baada ya kuchanganua ilitoa maelezo yaliyodhoofika kidogo kuhusu makala - bila vipimo kama vile idadi ya mara ambazo zimetazamwa. Muigizaji maalum kisha alichukua taarifa kuhusu makala na kukimbilia kurasa za html ili kuisasisha na kuiunganisha na toleo la zamani.

Kwa ujumla, kama katika akka, hakukuwa na haja ya hii, unaweza kuhifadhi tu updateDate kwa makala na kuchukua mpya zaidi bila muunganisho wowote, lakini barabara ya adha iliniongoza.

12 Agosti

Nilianza kujisikia huru na, kwa ajili ya kujifurahisha tu, nilifanya kila soga kuwa mwigizaji tofauti. Kinadharia, mwigizaji mwenyewe ana uzito wa ka 300 na wanaweza kuundwa kwa mamilioni, hivyo hii ni mbinu ya kawaida kabisa. Inaonekana kwangu kuwa suluhisho liligeuka kuwa la kufurahisha sana:

Muigizaji mmoja alikuwa daraja kati ya seva ya telegram na mfumo wa ujumbe katika Akka. Alipokea tu jumbe na kuzituma kwa muigizaji wa gumzo anayemtaka. Muigizaji wa gumzo anaweza kutuma kitu kama jibu - na kingetumwa tena kwa telegramu. Kilichokuwa rahisi sana ni kwamba mwigizaji huyu aligeuka kuwa rahisi iwezekanavyo na alikuwa na mantiki tu ya kujibu ujumbe. Kwa njia, habari kuhusu makala mpya ilikuja kwa kila mazungumzo, lakini tena sioni matatizo yoyote katika hili.

Kwa ujumla, bot ilikuwa tayari kufanya kazi, kujibu ujumbe, kuhifadhi orodha ya makala iliyotumwa kwa mtumiaji, na nilikuwa tayari kufikiri kwamba bot ilikuwa karibu tayari. Niliongeza polepole vipengele vidogo kama vile kuhalalisha majina ya waandishi na vitambulisho (kubadilisha "sd f" na "s_d_f").

Kulikuwa na kitu kimoja tu kilichosalia ndogo lakini - hali haikuokolewa popote.

Kila kitu kilienda vibaya

Labda umegundua kuwa niliandika bot peke yangu. Kwa hivyo, mshiriki wa pili alihusika katika maendeleo, na mabadiliko yafuatayo yalionekana kwenye nambari:

  • MongoDB ilionekana kuhifadhi hali. Wakati huo huo, magogo katika mradi huo yalivunjwa, kwa sababu kwa sababu fulani Monga alianza kuwatuma barua taka na watu wengine walizima tu ulimwenguni.
  • Muigizaji wa daraja katika Telegram alibadilishwa zaidi ya kutambuliwa na akaanza kuchanganua ujumbe mwenyewe.
  • Waigizaji wa gumzo walikatwa bila huruma, na badala yake walibadilishwa na mwigizaji ambaye alificha habari zote kuhusu soga zote mara moja. Kwa kila kupiga chafya, mwigizaji huyu aliingia kwenye shida. Kweli, ndio, kama wakati wa kusasisha habari kuhusu nakala, kuituma kwa watendaji wote wa gumzo ni ngumu (sisi ni kama Google, mamilioni ya watumiaji wanangojea nakala milioni kwenye gumzo kwa kila moja), lakini kila wakati gumzo linasasishwa, ni kawaida kwenda Monga. Kama nilivyogundua baadaye, mantiki ya kufanya kazi ya mazungumzo pia ilikatwa kabisa na mahali pake kitu ambacho hakikufanya kazi kilionekana.
  • Hakuna alama iliyobaki ya aina ya madarasa.
  • Baadhi ya mantiki isiyofaa imeonekana kwa waigizaji na usajili wao kwa kila mmoja, na kusababisha hali ya mbio.
  • Miundo ya data yenye nyanja za aina Option[Int] imegeuzwa kuwa Int na maadili chaguo-msingi ya kichawi kama -1. Baadaye niligundua kuwa mongoDB huhifadhi json na hakuna chochote kibaya kwa kuihifadhi hapo Option vizuri, au angalau kuchambua -1 kama Hakuna, lakini wakati huo sikujua hili na nikakubali neno langu kwamba "hivyo ndivyo inavyopaswa kuwa." Sikuandika msimbo huo, na sikujisumbua kuubadilisha kwa wakati huo.
  • Niligundua kuwa anwani yangu ya IP ya umma inaelekea kubadilika, na kila wakati ilinibidi kuiongeza kwenye orodha iliyoidhinishwa ya Mongo. Nilizindua bot ndani ya nchi, Monga alikuwa mahali fulani kwenye seva za Monga kama kampuni.
  • Ghafla, urekebishaji wa vitambulisho na umbizo la ujumbe kwa telegramu ulitoweka. (Hmm, kwa nini iwe hivyo?)
  • Nilipenda kwamba hali ya bot imehifadhiwa kwenye hifadhidata ya nje, na inapoanzishwa tena inaendelea kufanya kazi kana kwamba hakuna kilichotokea. Walakini, hii ilikuwa nyongeza pekee.

Mtu wa pili hakuwa na haraka sana, na mabadiliko haya yote yalionekana kwenye lundo moja kubwa tayari mwanzoni mwa Septemba. Sikuthamini mara moja kiwango cha uharibifu uliosababishwa na nikaanza kuelewa kazi ya hifadhidata, kwa sababu ... Sijawahi kushughulika nao kabla. Baadaye tu ndipo niligundua ni nambari ngapi za kufanya kazi zilikatwa na ni mende ngapi ziliongezwa mahali pake.

Septemba

Mwanzoni nilidhani itakuwa muhimu kujua Monga na kuifanya vizuri. Kisha polepole nilianza kuelewa kuwa kuandaa mawasiliano na hifadhidata pia ni sanaa ambayo unaweza kufanya mbio nyingi na kufanya makosa tu. Kwa mfano, ikiwa mtumiaji anapokea ujumbe mbili kama /subscribe - na kwa kukabiliana na kila mmoja tutaunda kuingia kwenye meza, kwa sababu wakati wa usindikaji ujumbe huo mtumiaji hajasajiliwa. Nina mashaka kuwa mawasiliano na Monga katika hali yake ya sasa haijaandikwa kwa njia bora. Kwa mfano, mipangilio ya mtumiaji iliundwa wakati alipojiandikisha. Ikiwa alijaribu kuwabadilisha kabla ya ukweli wa usajili ... bot haikujibu chochote, kwa sababu kanuni katika muigizaji iliingia kwenye hifadhidata kwa mipangilio, haikuipata na ikaanguka. Nilipoulizwa kwa nini usiunde mipangilio inavyohitajika, nilijifunza kwamba hakuna haja ya kuibadilisha ikiwa mtumiaji hajajiandikisha... Mfumo wa kuchuja ujumbe ulifanywa kwa namna fulani bila dhahiri, na hata baada ya kuangalia kwa karibu msimbo ningeweza. sielewi kama ilikusudiwa kwa njia hii mwanzoni au kuna hitilafu hapo.

Hakukuwa na orodha ya makala iliyowasilishwa kwenye gumzo; badala yake, ilipendekezwa niandike mimi mwenyewe. Hili lilinishangaza - kwa ujumla, sikuwa dhidi ya kuvuta kila aina ya vitu kwenye mradi huo, lakini ingekuwa na mantiki kwa yule aliyeleta vitu hivi na kuviharibu. Lakini hapana, mshiriki wa pili alionekana kukata tamaa kwa kila kitu, lakini akasema kwamba orodha ndani ya gumzo inasemekana ni suluhu mbaya, na ilikuwa ni lazima kufanya ishara na matukio kama "makala y yalitumwa kwa mtumiaji x." Halafu, ikiwa mtumiaji aliomba kutuma nakala mpya, ilikuwa ni lazima kutuma ombi kwa hifadhidata, ambayo ingechagua matukio yanayohusiana na mtumiaji kutoka kwa matukio, pia kupata orodha ya vifungu vipya, kuchuja, kutuma kwa mtumiaji. na kutupa matukio kuhusu hili kwenye hifadhidata.

Mshiriki wa pili alichukuliwa mahali pengine kuelekea vifupisho, wakati bot haitapokea tu nakala kutoka kwa Habr na kutumwa sio tu kwa telegraph.

Kwa namna fulani nilitekeleza matukio kwa namna ya ishara tofauti kwa nusu ya pili ya Septemba. Sio sawa, lakini angalau bot ilianza kufanya kazi na kuanza kunitumia nakala tena, na polepole nikagundua kile kinachotokea kwenye nambari.

Sasa unaweza kurudi mwanzo na kukumbuka kuwa hazina haikuundwa na mimi hapo awali. Ni nini kingeweza kwenda kama hii? Ombi langu la kuvuta lilikataliwa. Ilibadilika kuwa nilikuwa na msimbo wa redneck, kwamba sikujua jinsi ya kufanya kazi katika timu, na ilibidi kurekebisha hitilafu kwenye curve ya sasa ya utekelezaji, na sio kuiboresha kwa hali inayoweza kutumika.

Nilikasirika na kutazama historia ya ahadi na idadi ya nambari iliyoandikwa. Niliangalia nyakati ambazo hapo awali ziliandikwa vizuri, kisha zikavunjwa nyuma ...

F*rk hiyo

Nilikumbuka makala hiyo Wewe si Google.

Nilidhani kwamba hakuna mtu anayehitaji wazo bila utekelezaji. Nilidhani kuwa ninataka kuwa na roboti inayofanya kazi, ambayo itafanya kazi katika nakala moja kwenye kompyuta moja kama programu rahisi ya java. Ninajua kuwa bot yangu itafanya kazi kwa miezi bila kuanza tena, kwani tayari nimeandika roboti kama hizo hapo awali. Ikiwa itaanguka ghafla na haitumii mtumiaji makala nyingine, anga haitaanguka chini na hakuna janga lolote litakalotokea.

Kwa nini ninahitaji Docker, mongoDB na ibada nyingine ya shehena ya programu "mbaya" ikiwa nambari haifanyi kazi au inafanya kazi kwa upotovu?

Niliacha mradi na kufanya kila kitu kama nilivyotaka.

Telegram bot kwa uteuzi wa kibinafsi wa makala kutoka kwa Habr

Karibu na wakati huo huo, nilibadilisha kazi na wakati wa bure ukakosekana sana. Asubuhi niliamka kwenye treni, jioni nilichelewa kurudi na sikutaka tena kufanya chochote. Sikufanya chochote kwa muda, hapohamu ya kutaka kuimaliza ile boti ilinizidi nguvu, nikaanza kuiandika tena ile code taratibu huku nikiendesha gari kuelekea kazini asubuhi. Sitasema kuwa ilikuwa na tija: kukaa kwenye treni inayotetereka na kompyuta ndogo kwenye paja lako na kutazama kufurika kwa rundo kutoka kwa simu yako sio rahisi sana. Walakini, muda uliotumika kuandika msimbo uliruka bila kutambuliwa kabisa, na mradi ukaanza kuelekea polepole kuelekea hali ya kufanya kazi.

Mahali pengine nyuma ya akili yangu kulikuwa na mdudu wa shaka ambaye alitaka kutumia mongoDB, lakini nilidhani kuwa pamoja na faida za uhifadhi wa serikali "unaoaminika", kulikuwa na shida zinazoonekana:

  • Hifadhidata inakuwa hatua nyingine ya kutofaulu.
  • Nambari hiyo inazidi kuwa ngumu, na itanichukua muda mrefu kuiandika.
  • Nambari inakuwa polepole na isiyofaa; badala ya kubadilisha kitu kwenye kumbukumbu, mabadiliko hutumwa kwenye hifadhidata na kuvutwa nyuma ikiwa ni lazima.
  • Kuna vikwazo juu ya aina ya uhifadhi wa matukio katika meza tofauti, ambayo inahusishwa na upekee wa hifadhidata.
  • Toleo la majaribio la Monga lina mapungufu, na ikiwa utaingia ndani yao, utalazimika kuzindua na kusanidi Monga kwenye kitu.

Nilikata monga, sasa hali ya bot inahifadhiwa tu kwenye kumbukumbu ya programu na mara kwa mara huhifadhiwa kwa faili katika mfumo wa json. Labda katika maoni wataandika kwamba nina makosa, kwamba hii ndio ambapo database inapaswa kutumika, nk. Lakini huu ni mradi wangu, mbinu na faili ni rahisi iwezekanavyo na inafanya kazi kwa njia ya uwazi.

Ilitupa maadili ya uchawi kama -1 na kurejesha ya kawaida Option, imeongeza hifadhi ya jedwali la hashi iliyo na makala yaliyotumwa kurudi kwenye kifaa na maelezo ya gumzo. Imeongeza ufutaji wa habari kuhusu vifungu vya zamani zaidi ya siku tano, ili usihifadhi kila kitu. Nilileta ukataji katika hali ya kufanya kazi - magogo yameandikwa kwa idadi inayofaa kwa faili na koni. Aliongeza amri kadhaa za wasimamizi kama vile kuhifadhi hali au kupata takwimu kama vile idadi ya watumiaji na makala.

Imerekebisha rundo la vitu vidogo: kwa mfano, kwa makala idadi ya mara ambazo imetazamwa, zinazopendwa, zisizopendwa na maoni wakati wa kupitisha kichujio cha mtumiaji sasa imeonyeshwa. Kwa ujumla, inashangaza jinsi vitu vingi vidogo vilipaswa kusahihishwa. Niliweka orodha, nikabainisha "makosa" yote hapo na kuyasahihisha kadri niwezavyo.

Kwa mfano, niliongeza uwezo wa kuweka mipangilio yote moja kwa moja kwenye ujumbe mmoja:

/subscribe
/rating +20
/author a -30
/author s -20
/author p +9000
/tag scala 20
/tag akka 50

Na timu nyingine /settings inawaonyesha haswa katika fomu hii, unaweza kuchukua maandishi kutoka kwake na kutuma mipangilio yote kwa rafiki.
Inaonekana kama kitu kidogo, lakini kuna kadhaa ya nuances sawa.

Uchujaji wa makala uliotekelezwa kwa njia ya muundo rahisi wa mstari - mtumiaji anaweza kuweka ukadiriaji wa ziada kwa waandishi na lebo, pamoja na thamani ya kizingiti. Ikiwa jumla ya ukadiriaji wa mwandishi, wastani wa ukadiriaji wa lebo na ukadiriaji halisi wa makala ni mkubwa kuliko thamani ya kiwango cha juu, basi makala yataonyeshwa kwa mtumiaji. Unaweza kuuliza bot kwa vifungu vilivyo na amri /mpya, au ujiandikishe kwa bot na itatuma nakala kwenye ujumbe wa kibinafsi wakati wowote wa siku.

Kwa ujumla, nilikuwa na wazo kwa kila nakala kutoa huduma zaidi (vituo, idadi ya maoni, alamisho, mienendo ya mabadiliko ya ukadiriaji, idadi ya maandishi, picha na nambari kwenye kifungu, maneno muhimu), na kumwonyesha mtumiaji sawa/ si sawa piga kura chini ya kila makala na ufunze mfano kwa kila mtumiaji, lakini nilikuwa mvivu sana.

Kwa kuongeza, mantiki ya kazi haitakuwa wazi sana. Sasa ninaweza kuweka ukadiriaji wa +9000 kwa mgonjwaZero na kwa alama ya kizingiti cha +20 nitahakikishiwa kupokea nakala zake zote (isipokuwa, bila shaka, nimeweka -100500 kwa vitambulisho vingine).

Usanifu wa mwisho uligeuka kuwa rahisi sana:

  1. Muigizaji anayehifadhi hali ya gumzo na makala zote. Inapakia hali yake kutoka kwa faili kwenye diski na kuihifadhi mara kwa mara, kila wakati kwa faili mpya.
  2. Muigizaji ambaye hutembelea mlisho wa RSS mara kwa mara, hujifunza kuhusu makala mapya, huangalia viungo, huchambua, na kutuma makala haya kwa mwigizaji wa kwanza. Kwa kuongeza, wakati mwingine huomba orodha ya makala kutoka kwa mwigizaji wa kwanza, huchagua wale ambao sio zaidi ya siku tatu, lakini hawajasasishwa kwa muda mrefu, na kusasisha.
  3. Muigizaji ambaye anawasiliana na telegramu. Bado nilileta ujumbe ukiwa umechanganuliwa kabisa hapa. Kwa njia ya kirafiki, ningependa kuigawanya katika sehemu mbili - ili moja ichanganue ujumbe unaoingia, na ya pili inashughulikia shida za usafirishaji kama vile kutuma tena ujumbe ambao haujatumwa. Sasa hakuna kutuma tena, na ujumbe ambao haukufika kwa sababu ya kosa utapotea tu (isipokuwa umebainishwa kwenye magogo), lakini hadi sasa hii haijasababisha shida yoyote. Labda shida zitatokea ikiwa kundi la watu litajiandikisha kwenye roboti na nitafikia kikomo cha kutuma ujumbe).

Nilichopenda ni kwamba shukrani kwa akka, kuanguka kwa waigizaji 2 na 3 kwa ujumla haiathiri utendaji wa roboti. Labda nakala zingine hazijasasishwa kwa wakati au ujumbe fulani haufikii telegramu, lakini akaunti huanza tena muigizaji na kila kitu kinaendelea kufanya kazi. Ninahifadhi habari ambayo makala hiyo inaonyeshwa kwa mtumiaji tu wakati mwigizaji wa telegram anajibu kwamba amewasilisha ujumbe kwa ufanisi. Jambo baya zaidi ambalo linatishia ni kutuma ujumbe mara kadhaa (ikiwa hutolewa, lakini uthibitisho umepotea kwa namna fulani). Kimsingi, ikiwa muigizaji wa kwanza hakuhifadhi serikali ndani yake, lakini aliwasiliana na hifadhidata fulani, basi anaweza pia kuanguka bila kuonekana na kurudi kwenye maisha. Ningeweza pia kujaribu kuendelea kwa akka kurejesha hali ya watendaji, lakini utekelezaji wa sasa unanifaa na unyenyekevu wake. Sio kwamba nambari yangu ilianguka mara nyingi - badala yake, niliweka bidii sana kuifanya iwezekane. Lakini shit hutokea, na uwezo wa kuvunja mpango katika vipande pekee-waigizaji ilionekana kweli rahisi na vitendo kwangu.

Niliongeza mduara-ci ili msimbo ukivunjika, utajua mara moja kuihusu. Kwa uchache, inamaanisha kuwa msimbo umeacha kukusanya. Hapo awali nilitaka kuongeza travis, lakini ilionyesha tu miradi yangu bila uma. Kwa ujumla, vitu hivi vyote viwili vinaweza kutumika kwa uhuru katika hazina zilizo wazi.

Matokeo ya

Tayari ni Novemba. Bot imeandikwa, nimekuwa nikitumia kwa wiki mbili zilizopita na niliipenda. Ikiwa una mawazo ya kuboresha, andika. Sioni umuhimu wa kuichuma - acha ifanye kazi na kutuma makala za kuvutia.

Kiungo cha kijibu: https://t.me/HabraFilterBot
Github: https://github.com/Kright/habrahabr_reader

Hitimisho ndogo:

  • Hata mradi mdogo unaweza kuchukua muda mrefu.
  • Wewe si Google. Hakuna maana katika kurusha shomoro kutoka kwa kanuni. Suluhisho rahisi linaweza kufanya kazi vile vile.
  • Miradi ya kipenzi ni nzuri sana kwa majaribio ya teknolojia mpya.
  • Boti za Telegraph zimeandikwa kwa urahisi kabisa. Ikiwa sio "kazi ya pamoja" na majaribio ya teknolojia, bot ingekuwa imeandikwa kwa wiki moja au mbili.
  • Mfano wa mwigizaji ni jambo la kuvutia ambalo linakwenda vizuri na msimbo wa nyuzi nyingi na usio na makosa.
  • Nadhani nilipata ladha ya kwa nini jumuiya ya chanzo huria inapenda uma.
  • Hifadhidata ni nzuri kwa sababu hali ya programu haitegemei tena programu kuacha kufanya kazi/kuwashwa upya, lakini kufanya kazi na hifadhidata kunachanganya msimbo na kuweka vikwazo kwenye muundo wa data.

Chanzo: mapenzi.com

Kuongeza maoni