Ankhbot – Egy (majdnem) teljesen autonóm, felhasználó által létrehozott egyéni üdvözlő üzenet program létrehozása

A Medium működésében bekövetkezett változások miatt nem fogom tovább fenntartani ezt a blogot. Az új blogomat a https://www.resonantdrifter.com címen találod, és egy közvetlen linket erre a cikkre a https://www.resonantdrifter.com/blog/ankhbot-%E2%80%94-creating-an-almost-completely-autonomous-user-created-custom-welcome-message-program/

Az Ankhbot és a Streamlabs egyesülése miatt ez a cikk kissé elavult, ezért készítettem egy újat! Kérlek, látogass el a találóan elnevezett “Streamlabs Chatbot – Egy (majdnem) autonóm, felhasználó által létrehozott egyéni üdvözlő üzenetprogram létrehozása!”

Egy ideje úgy döntöttem, hogy megadom a Twitch követőimnek, akiket Driftereknek hívok, a lehetőséget, hogy létrehozzák saját üdvözlő üzenetüket, amely egy kis pénzösszegért (az én csatornámon ellátmánynak hívják) üdvözölné őket, amikor belépnek a chatbe. Ez lehetővé tenné számukra, hogy a készletek egy részét a rajtaütéseken kívül másra is elköltsék (a csatornámon a rablások változata), és a közösséget egy kicsit jobban a sajátjuknak érezzék. Természetesen ez vezetett ahhoz az ötlethez is, hogy üdvözlő üzenetet készíthessenek más felhasználóknak – egy szórakoztató módja annak, hogy a követők szórakozhassanak más követőkkel. Szerencsére az Ankhbot tartalmazott egy lehetőséget arra, hogy az üdvözlő üzenetek (többek között) akkor kerüljenek bele, amikor bizonyos felhasználók belépnek a csatornádba.

Ezt a tervet azonnal mozgásba hoztam, és sikerrel jártam, mivel a $removepoints() paraméterrel el tudtam venni tőlük a Supplies-t, és ők megsúgták nekem, hogy milyen üzenetet szeretnének az üdvözlő üzenetüknek, vagy a másik Drifter felhasználónevét és üzenetét. Azonban nem sokkal az áttörés után (az én fejemben) rájöttem, hogy szinte lehetetlen lenne számomra, hogy folyamatosan lépést tartsak az igényükkel anélkül, hogy ismételten megszakítanám a játékmenetet. Ez vezetett arra az útra, hogy keressem a módját annak, hogy a felhasználók számára teljesen autonóm módon létrehozhassam és megváltoztathassam az üdvözlő üzenetüket tetszés szerint.

Őszinte leszek veled: az Ankhbotban nem lehetséges teljesen autonóm, a felhasználó által létrehozott egyéni üdvözlő üzenetet létrehozni. A Twitteren lefuttatva az ötletemet Marcin Swierzowski mellett, megerősítette, hogy az ötletem egyszerűen nem képes gyümölcsöt hozni.

John Paul @resonantdrifter

Majdnem. Kell egy mód arra, hogy az On Join eseményt felhasználónként automatikusan úgy állítsuk be, hogy az adott $user.txt-t automatikusan olvassa… #ankhbot@AnkhHeart

Ankh Heart @AnkhHeart

@resonantdrifter Ez nem lehetséges. Manuálisan kell létrehoznod az On Join eseményeket kézzel.

Mégis, a makacsságom kitartott, és rábukkantam egy olyan módszerre, amely lehetővé teszi a felhasználó számára, hogy létrehozza és megváltoztassa a saját (és mások) saját egyéni üdvözlő üzenetét tetszés szerint, NAGYON KIS ELSŐ BEÁLLÍTÁS mellett. Az alábbiakban bemutatom, hogyan hoztam létre a (Majdnem) teljesen önállóan a felhasználó által létrehozott egyéni üdvözlő üzenetet!

Először is, ennek a beállításnak a legintenzívebb része (különösen, ha már sok követőd van, vagy naponta sok követőt kapsz) az On Join Event lista beállítása. Az On Join Event listában mondod meg az Ankhbotnak, hogy mit akarsz, mit tegyen, amikor egy adott felhasználó belép a chatbe. Ezt sajnos nem lehet automatizálni, és ez volt az a pont, ahol elakadtam a nagy tervemben. Nagyon szerettem volna, ha az Ankhbot automatikusan összeállítja ezt a listát a jelenlegi követőimből, de ennek a rendszernek az automatizálása egyszerűen nem lehetséges, így kézzel kell megadnod egy bejegyzést minden egyes követődnek. Szerencsére ezt követőnként csak egyszer kell megtenned. Ezután minden üzenet automatikusan frissül magától.

A On Join Event rendszerben minden egyes követődnek létre kell hoznod egy bejegyzést, összekapcsolva azt egy .txt dokumentumhoz, amely a csevegésbe való belépéskor megjeleníti a parancsukat.

Először is hozzon létre egy mappát, ahol az Ankhbot által létrehozott összes .txt dokumentumot tárolni szeretné. Ne feledd, hogy bár kis méretűek lesznek (fájlméret szempontjából), számos fájl fog létrejönni (feltéve, hogy sok követőd lesz). Ha ez megtörtént, menj vissza az Ankhbotba, és hozz létre egy parancsot minden egyes követődnek a következőképpen (tipp: minden marad ugyanaz, kivéve az Info slotot):

  • UserGroup: Tartsa ezt “User_Specific”
  • Info: egyéni követő felhasználóneve
  • Csak ügyfél: “False” (True azt jelenti, hogy csak a felhasználó láthatja)
  • Enabled: $readline(C:\user\$user.txt)

Nézzük meg közelebbről a “Message” slotot:

$readline(C:\user\$user.txt)

A $readline() paraméter egyszerűen beolvassa az első sort abban a szöveges dokumentumban, amelyre mutat. A cél a zárójelek közé kerül. Ez egy fontos rész: a szöveges dokumentum $user.txt elnevezése lehetővé teszi az Ankhbot számára, hogy a felhasználó nevével felcímkézett .txt dokumentumot keressen (erre a dokumentum további részében még visszatérünk).

Mihelyt beírtuk az összes aktuális követőt, készen vagyunk. Ha azonban újabb követőkre teszünk szert, mindegyikükhöz új bejegyzést kell létrehoznunk. Ez a legtöbb munka, amit ebben a majdnem autonóm rendszerben el kell végeznünk.

KÖZÉPKOMMANDÓK

Most, hogy megvan az alapbeállítás, hozzuk létre azokat a parancsokat, amelyek lehetővé teszik a felhasználók számára, hogy beállítsák és megváltoztassák üdvözlő üzenetüket. Csak hogy egy oldalon álljunk, az én parancsom a követők számára, hogy létrehozzák saját üdvözlő üzenetüket, a !buywelcome, és a csatornámban a valuta a supplies.

!BUYWELCOME

Hogy ez működjön, először létre kell hoznod egy .txt dokumentumot, benne két paraméterrel: $removepoints(“target”, “min”, “max”, “succeed”, “fail”, “forceremove”) és $overwritefile(“FileLocation”, “Text”). A dokumentumomat buywelcome.txt-nek címkéztem és így töltöttem ki:

$removepoints(“$user”, “100”, “100”,”$value supplies have been removed from your inventory and your welcome message has been changed to ‘$msg'”, “You do not have enough supplies in your inventory!”, “false”) $overwritefile(“C:\Ankhbot\user\user\$user.txt”,”$user: $msg”)

Az első paraméter – $removepoints() – pontosan azt teszi, amit mond, és pontokat (vagy valutát) vesz el attól a felhasználótól, aki a parancsot adja. Ebben az esetben 100 készletet távolít el (ha a felhasználónak van elég), és egy üzenetet ad vissza, ha van vagy nincs elég készlete. Nézzük meg közelebbről:

  • “$user” – a $removepoints() paramétert a parancsot beíró felhasználóhoz kapcsolja
  • “min”, “max” – az én paraméteremben a minimális és maximális kifizetést egyenként 100 készletre állítja be, hogy ne változzon
  • “succeed” – “$value supplies blah blah blah blah ‘$msg'” elveszi a valutából eltávolított összeget (100) és megjeleníti a chat üzenetben a sikerüzenettel együtt. A $msg paraméter újra kiírja a felhasználó által beállított üzenetet, hogy a felhasználó láthassa. Ezt azért tettem bele, hogy tudják, hogy megváltozott.
  • “fail” – “You do no blah blah” az üzenet, ha a felhasználónak nincs 100 készlete (szeretnek játszani)
  • “forceremove” – “false” lehetővé teszi, hogy a felhasználók ne tudjanak vásárolni, ha nincs elég készletük. Ennek “True”-ra állítása lehetővé tenné, hogy negatív valutába menjen.

A második paraméter lehetővé teszi, hogy az üzenetet egy .txt dokumentumban tároljuk a felhasználó nevével felcímkézve ($user.txt) a $overwritefile(“FileLocation”, “Text”) paraméter használatával.

Mielőtt belemennénk ebbe, szeretnék elmagyarázni valamit. Emlékszel, amikor létrehoztuk az On Join Event listát? Létrehoztunk egy mappát az összes felhasználói .txt fájlnak, de nem hoztunk létre tényleges szövegfájlokat. Hogy miért? Ez biztosítja, hogy ha egy felhasználó, aki nem adott be semmit üdvözlő üzenetként, nem fog kapni, amikor csatlakozik a chathez. Nézzük meg közelebbről:

  • $overwritefile(“FileLocation”) – a $savetofile helyett a $overwritefile használatával a felhasználó bármikor megváltoztathatja ezt az üzenetet.
  • “text” – “$user: $msg” ez a két paraméter elmenti a felhasználó felhasználónevét és az általa beírt üzenetet, hogy később mindkettőt kiírja a képernyőre.

A tényleges !buywelcome parancsban egyszerűen a $readline(FileLocation) parancsot kell beírni, és a létrehozott dokumentumra (az én esetemben a buywelcome.txt) irányítani. Ez minden, amit tenned kell ahhoz, hogy ez működjön.

!BUYOTHERWELCOME

Egy szórakoztató és kissé versengő élmény létrehozása érdekében szerettem volna lehetővé tenni, hogy a követőim üdvözlő üzeneteket készíthessenek más felhasználók számára. Tudtam, hogy ez nagyon hasonlít majd a !buywelcome parancsra, de saját akadályokat fog jelenteni, mivel egy felhasználó készít üzenetet egy másiknak. Így állítottam ezt be:

Az előző parancshoz hasonlóan létrehoz egy .txt dokumentumot a $removepoints(“target”, “min”, “max”, “succeed”, “fail”, “forceremove”) és a $overwritefile(“FileLocation”, “Text”) paraméterekkel benne. Az előző paranccsal ellentétben kissé másképp kell beállítanod, hogy működjön. Az enyém így néz ki:

$removepoints(“$user”, “100”, “100”, “100”,”$value készletek eltávolításra kerültek a leltárból és $target üdvözlő üzenete ‘$msg’-re változott”, “Nincs elég készlet a leltárban!”, “false”) $overwritefile(“C:\Users\JohninMotion\Documents\Ankhbot\user\$target.txt”,”$msg”)

Az első paraméter – $removepoints() – pontosan azt teszi, amit mond, és pontokat (vagy valutát) vesz el a parancsot beadó felhasználótól. Ebben az esetben 100 készletet távolít el (ha a felhasználónak van elég), és egy üzenetet ad vissza, ha van vagy nincs elég készlete. A különbség az, hogy megadja az üzenet célját. Nézzük meg közelebbről:

  • “$user” – a $removepoints() paramétert a parancsot beíró felhasználóhoz kapcsolja
  • “min”, “max” – az én paraméteremben a minimális és maximális kifizetést egyenként 100 készletre állítja be, így nem változik
  • “succeed” – “$value supplies blah blah $target blah ‘$msg'” a valutából eltávolított összeget (100) veszi és megjeleníti a chat üzenetben a sikerüzenettel együtt. A $target megmondja a rendszernek, hogy kinek szeretné az üzenetet küldeni. A $msg paraméter újra kiírja a felhasználó által beállított üzenetet, hogy a felhasználó láthassa. Ezt azért tettem bele, hogy tudják, hogy megváltozott.
  • “fail” – “You do no blah blah” az üzenet, ha a felhasználónak nincs 100 készlete (megint szeretnek játszani)
  • “forceremove” – “false” lehetővé teszi, hogy a felhasználók ne tudjanak vásárolni, ha nincs elég készletük. Ennek “True”-ra állítása lehetővé tenné, hogy negatív valutába kerüljön.

A második paraméter lehetővé teszi, hogy az üzenetet egy .txt dokumentumban tároljuk, amely ezúttal a célpont nevével van felcímkézve ($target.txt), a $overwritefile(“FileLocation”, “Text”) paraméter használatával. Nézzük meg közelebbről:

  • $overwritefile(“FileLocation”) – a $savetofile helyett a $overwritefile használatával a felhasználó bármikor megváltoztathatja ezt az üzenetet.
  • “text” – “$target: $msg” ez a két paraméter elmenti a célszemély felhasználónevét és az általa begépelt üzenetet, hogy később mindkettőt kiírja a képernyőre.

A tényleges !buyotherwelcome parancsban egyszerűen a $readline(FileLocation) parancsot kell beírni, és a létrehozott dokumentumra (esetemben a buyotherwelcome.txt-re) mutatni. És ez minden, amit tenned kell ahhoz, hogy ez működjön.

!MYWELCOME

Végezetül szerettem volna, ha a követőim akkor is láthatják az üzenetüket, ha az már a chatbe való belépés után történt, már csak azért is, mert látni akarják, hogy valóban működött. Ez egy nagyon egyszerűen beállítható dolog. Íme, hogyan:

Készíts egy parancsot, az én esetemben ez a !mywelcome, és tedd bele a $readrandline(FileLocation) paramétert. Ezen belül egyszerűen mutass rá arra a mappára, amelyben az összes felhasználói üdvözlő üzenet található (nálam \user\), a $user.txt végével. Az enyém például így néz ki:

$readrandline(C:\Users\JoininMotion\Documents\Ankhbot\users\$user.txt)

Ez az. Mostantól, amikor egy felhasználó beírja a !mywelcome parancsot, a saját üdvözlő üzenetét fogja látni.

Az önműködő gép

A fent beállított útvonalat követve képes leszel létrehozni a saját (majdnem) teljesen önálló, a felhasználó által létrehozott egyéni üdvözlő üzenetet. Talán egy napon a jövőben, ha Marcin úgy dönt, hogy folytatja az Ankhbot fejlesztését, képesek leszünk egy valóban teljesen autonóm rendszert létrehozni. Addig is, minden intenzív célra egyelőre ennek is meg kell felelnie.

Szólj hozzá!