Megjegyzés: Ez a cikk feltételezi, hogy ismeri a NUSMods, a Telegram és a TypeScript/JavaScript alkalmazásokat.

Ez egy 3 részes sorozat 3. része. „Itt az 1. rész”. 2. rész (optimalizálás) itt.

Az utolsó részben áttekintettük és optimalizáltuk a bot működését, hogy felgyorsítsuk a felhasználók számára. Most pedig nézzük meg a bot használhatóságának javítását.

Mit tehetünk még?

Összefoglalva: így néz ki most a bot által küldött üzenet.

  • Gombok a további információk gyors megtekintéséhez

Hozzáadhatunk egy beépített gombot az üzenethez, így a felhasználók gyorsan láthatják a teljes leírást, a menetrendet és egyebeket.

Ahelyett, hogy új üzenetet küldene, a bot szerkesztia már elküldött üzenetet. Ez segít megelőzni a spameket.

  • A robothasználat engedélyezése privát üzenetben

Az első részben beállítottunk egy üzenetet, amely válaszol a felhasználóknak, amikor üzenetet küldenek a robotunknak. Azonban annak biztosítása érdekében, hogy a felhasználók a legtöbb lehetőséggel rendelkezzenek a robotunkkal való interakció során, lehetővé tesszük számukra a keresést a bot üzenetek elküldésével.

Amikor a felhasználó közvetlen üzenetet küld a robotunknak, a bot egyszerűen válaszol minden olyan modul listájával, amely megfelel a közvetlen üzenet tartalmának. Az üzenethez csatolva lesznek a megfelelő soron belüli gombok, amelyekre a felhasználó rákattinthat.

A felhasználó által küldött új üzeneteket külön kezeljük, és ez nem befolyásolja a korábbi gombok működését.

  • Díszítse ki az üzenetet

Tisztítsa meg az üzenetet, hogy könnyebben olvasható legyen

  • Hibakezelés

Győződjön meg arról, hogy a bot nem csak akkor omlik össze, ha valami elromlik

Gombok a további információk gyors megtekintéséhez

Használhatunk egy inline_keyboard gombot, amelyet megnyomva a robotunk szerkesztheti az üzenetet az új üzenettartalommal.

Annak érdekében, hogy azonosítsuk az üzenetet, ahol a gombra kattintottak, néhány dolgot meg kell tennünk, mert nem ismerjük az eredetileg elküldött üzenet azonosítóját.

  1. Inline visszajelzés engedélyezése a @Botfather alkalmazásban
  2. Hallgassa meg a chosen_inline_result eseményt a robotunkban, ahol kibonthatjuk a inline_message_id és result_id fájlokat, amelyek az üzenetazonosítót és a modul kódot tartalmazzák.
  3. Frissítse az eredeti üzenet szövegközi gombját, a inline_message_id és result_id kódolásával a callback_query tulajdonságban.

Így amikor a felhasználó rákattint a gombra, expand_inline_${msgId}_${moduleCode} jelzést kaphatunk, amivel frissíthetjük az üzenet adatait. Tegyük meg most.

A gyorsítótár frissítésére szolgáló függvényt is absztraháltam updateCache()-re, hogy ne legyen duplikált kódunk.

Egy új buildFullMessage függvény bővíti a buildMessage függvényt, lehetővé téve számunkra a kiterjesztett üzenet létrehozását.

A robothasználat engedélyezése privát üzenetben

Ez nagyon hasonlít ahhoz, amit már csináltunk.

  1. Szöveges üzenet fogadása a felhasználótól. A szöveges üzenet tartalma lesz a keresési lekérdezés.
  2. Keressen minden olyan modult, amely megfelel a lekérdezésnek.
  3. Ha egynél több modul is megfelel, akkor adjon vissza egy listát, amelyből a felhasználó az egyik soron belüli gombra kattintva választhat.
  4. Ha csak egy modul egyezik, vagy a felhasználó rákattint az egyik gombra, adja vissza az adott modul részletes adatait.

A keresést és a szűrést is függvénybe absztraháltam. Ez a függvény befog egy keresési lekérdezést, és szűrt találatlistát ad vissza.

Kész!

Díszítse ki az üzenetet

Néhány fejléc hozzáadásával sokkal könnyebben olvashatóvá tehetjük az üzenetet.

Ezenkívül végrehajthatunk egy regex keresést és cserét az érvényes modulkódokhoz a szövegben, és lecserélhetjük a NUSMods hivatkozásra.

Például a „CS1101S” egyezése
<a href='https://nusmods.com/modules/CS1101S'>CS1101S</a> lesz.

Hibakezelés

Csak akkor jelentkezünk be a konzolba, ha hiba történik az elkapással.

Következtetés

Ezzel véget is ért a 3 részes sorozat egy Telegram bot felépítéséről a NUSMods modul adatainak eléréséhez. Remélem szemléletes volt.

A jövőben megpróbálok létrehozni egy olyan botot, amely ugyanazt teszi, mint a @findmodbot, de helyette a NUSMods helyszíni adataival. Tartsa szemmel ezt a platformot, mert amikor megteszem, ide fogok írni.

Nézze meg a forráskódot "itt".

Tekintse meg a többi projektemet "itt".