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.
- Inline visszajelzés engedélyezése a @Botfather alkalmazásban
- Hallgassa meg a
chosen_inline_result
eseményt a robotunkban, ahol kibonthatjuk ainline_message_id
ésresult_id
fájlokat, amelyek az üzenetazonosítót és a modul kódot tartalmazzák. - Frissítse az eredeti üzenet szövegközi gombját, a
inline_message_id
ésresult_id
kódolásával acallback_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.
- Szöveges üzenet fogadása a felhasználótól. A szöveges üzenet tartalma lesz a keresési lekérdezés.
- Keressen minden olyan modult, amely megfelel a lekérdezésnek.
- 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.
- 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".