Vzhledem ke změnám ve fungování média již nebudu tento blog udržovat. Můj nový blog najdete na adrese https://www.resonantdrifter.com a přímý odkaz na tento článek na adrese https://www.resonantdrifter.com/blog/ankhbot-%E2%80%94-creating-an-almost-completely-autonomous-user-created-custom-welcome-message-program/
Vzhledem k fúzi Ankhbotu se Streamlabs je tento článek již mírně zastaralý, proto jsem vytvořil nový! Přejděte prosím na článek s výstižným názvem „Streamlabs Chatbot – Vytvoření (téměř) autonomního uživatelsky vytvořeného vlastního programu uvítacích zpráv“!
Před časem jsem se rozhodl dát svým Twitchovým sledujícím, kterým říkám Drifteři, možnost vytvořit si vlastní uvítací zprávu, která by je za malý obnos měny (v mém kanálu nazývaný zásoby) přivítala při vstupu do chatu. To by jim umožnilo utratit část těchto zásob za něco jiného než za přepadení (verze loupeží na mém kanálu) a komunita by se tak cítila trochu víc jako jejich. Samozřejmě to také vedlo k myšlence, že by mohli vytvořit uvítací zprávu pro ostatní uživatele – zábavný způsob, jak si stoupenci mohou zahrávat s ostatními stoupenci. Naštěstí Ankhbot zahrnul způsob, jak uvítací zprávy (mimo jiné) zahrnout při vstupu konkrétních uživatelů do vašeho kanálu.
Tento plán jsem okamžitě uvedl do chodu a měl úspěch, protože jsem jim mohl pomocí parametru $removepoints() vzít Supplies a oni mi pošeptali zprávu, kterou chtěli, aby jejich uvítací zpráva byla, nebo uživatelské jméno a zprávu jiného Driftera. Nicméně brzy po tomto průlomu (v mé mysli) jsem si uvědomil, že by pro mě bylo téměř nemožné důsledně vyhovět jejich potřebě, aniž bych opakovaně přerušil hru. To mě přivedlo na cestu hledání způsobu, jak vytvořit zcela autonomní způsob, jak by si uživatelé mohli vytvářet a měnit své uvítací zprávy podle libosti.
Řeknu vám to na rovinu: v Ankhbotu není možné vytvořit zcela autonomní vlastní uvítací zprávu vytvořenou uživatelem. Když jsem svůj nápad prohnal Marcinem Swierzowskim na Twitteru, potvrdil, že můj nápad prostě není schopen přinést ovoce.
John Paul @resonantdrifter
Téměř. Potřebuji způsob, jak automaticky nastavit událost On Join pro každého uživatele, aby se automaticky načetl jeho konkrétní $user.txt… #ankhbot@AnkhHeart
V systému On Join Event budete muset vytvořit záznam pro každého svého následovníka a propojit ho s .txt dokument, který zobrazí jejich příkaz při vstupu do chatu.
Nejprve vytvořte složku, do které chcete uložit všechny dokumenty .txt, které Ankhbot vytvoří. Pamatujte, že ačkoli budou malé (co do velikosti souborů), bude jich vytvořeno mnoho (za předpokladu, že získáte hodně následovníků). Jakmile je to hotovo, vraťte se do Ankhbotu a vytvořte příkaz pro každého z vašich následovníků takto (nápověda: vše zůstane stejné kromě slotu Info):
- UserGroup:
- Info: uživatelské jméno jednotlivých sledujících
- Pouze klient:
- Povoleno: „False“ (True znamená, že to uvidí pouze uživatel)
- Povoleno: „True“ (False ji samozřejmě pro daného uživatele vypne)
- Vol: Nastavte na jakoukoli úroveň, která vám a vašim divákům vyhovuje
- Zpráva: $readline(C:\user\$user.txt)
Podívejme se blíže na slot „Zpráva“:
$readline(C:\user\$user.txt)
Parametr $readline() jednoduše přečte první řádek v jakémkoli textovém dokumentu, na který jej odkážete. Cíl je uveden v závorkách. Toto je důležitá část: pojmenování textového dokumentu $user.txt umožňuje Ankhbotu vyhledat dokument .txt označený jménem uživatele (k tomu se vrátíme v plném rozsahu dále v tomto dokumentu).
Po zadání všech aktuálních následovníků jsme hotovi. Jakmile však získáme další sledující, musíme pro každého z nich vytvořit nový záznam. To je nejvíce práce, kterou budeme muset v tomto téměř autonomním systému udělat.
PŘÍKAZY PRO UPOZORNĚNÍ
Teď, když máme nastavené jádro, pojďme vytvořit příkazy, které umožní uživatelům nastavit a změnit jejich uvítací zprávu. Abychom byli zajedno, můj příkaz pro následovníky, který jim umožní vytvořit vlastní uvítací zprávu, je !buywelcome a měna v mém kanálu je supplies.
!BUYWELCOME
Aby to fungovalo, musíte nejprve vytvořit .txt dokument se dvěma parametry uvnitř: $removepoints(„target“, „min“, „max“, „succeed“, „fail“, „forceremove“) a $overwritefile(„FileLocation“, „Text“). Označil jsem svůj dokument buywelcome.txt a vyplnil ho takto:
$removepoints(„$user“, „100“, „100“,“$hodnota zásob byly odstraněny z vašeho inventáře a vaše uvítací zpráva byla změněna na ‚$msg'“, „Nemáte dostatek zásob v inventáři!“, „false“) $overwritefile(„C:\Ankhbot\user\$user.txt“,“$user: $msg“)
První parametr – $removepoints() – dělá přesně to, co říká, a odstraňuje body (nebo měnu) uživateli, který zadává příkaz. V tomto případě odstraní 100 zásob (pokud jich uživatel má dostatek) a vrátí zprávu, zda má nebo nemá dostatek zásob. Podívejme se na to blíže:
- „$user“ – spojuje parametr $removepoints() s uživatelem, který zadává příkaz
- „min“, „max“ – v mém parametru je nastavena minimální a maximální výplata po 100 zásobách, takže se nemění
- „succeed“ – „$value supplies bla bla bla ‚$msg'“ vezme jakoukoli odebranou částku z měny (100) a zobrazí ji ve zprávě v chatu spolu se zprávou o úspěchu. Parametr $msg přetiskne jakoukoli zprávu, kterou uživatel nastavil, aby ji viděl. Zahrnul jsem to, aby věděli, že se to změnilo.
- „fail“ – „You do no bla bla“ je zpráva, pokud uživatel nemá 100 zásob (rád hraje)
- „forceremove“ – „false“ umožňuje uživatelům, aby nemohli nakupovat, pokud nemají dostatek zásob. Nastavení této hodnoty na „True“ by umožnilo přejít do záporné měny.
Druhý parametr nám umožňuje uložit zprávu do dokumentu .txt označeného jako jméno uživatele ($user.txt) pomocí parametru $overwritefile(„FileLocation“, „Text“).
Než se do toho pustíme, chci něco vysvětlit. Vzpomínáte si, jak jsme vytvářeli seznam událostí On Join? Vytvořili jsme složku, do které jsme umístili všechny uživatelské soubory .txt, ale nevytvořili jsme žádné skutečné textové soubory. Proč? To zajišťuje, že když uživatel, který nic nezadal jako uvítací zprávu, ji při připojení k chatu nedostane. Podívejme se na to blíže:
- $overwritefile(„FileLocation“) – použitím $overwritefile místo $savetofile může uživatel tuto zprávu kdykoli změnit.
- „text“ – „$user: $msg“ tyto dva parametry uloží uživatelské jméno uživatele a zprávu, kterou napsal, aby je později oba vypsal na obrazovku.
V samotném příkazu !buywelcome jednoduše vložíte $readline(FileLocation) a nasměrujete ho na vytvořený dokument (v mém případě buywelcome.txt). To je vše, co musíte udělat, aby to fungovalo.
!BUYOTHERWELCOME
Pro vytvoření zábavného a poněkud soutěživého zážitku jsem chtěl umožnit svým následovníkům, aby mohli vytvářet uvítací zprávy pro ostatní uživatele. Věděl jsem, že se to bude velmi podobat příkazu !buywelcome, ale bude to představovat vlastní překážky, protože jde o jednoho uživatele, který vytváří zprávu pro jiného. Zde je návod, jak jsem to nastavil:
Podobně jako u předchozího příkazu vytvoříte dokument .txt s parametry $removepoints(„target“, „min“, „max“, „succeed“, „fail“, „forceremove“) a $overwritefile(„FileLocation“, „Text“) v něm. Na rozdíl od předchozího příkazu jej budete muset nastavit trochu jinak, aby fungoval. Takto vypadá ten můj:
$removepoints(„$uživatel“, „100“, „100“,“$hodnota zásob byly odstraněny z vašeho inventáře a uvítací zpráva $cíl byla změněna na ‚$msg'“, „Nemáte dostatek zásob v inventáři!“, „false“) $overwritefile(„C:\Users\JohninMotion\Documents\Ankhbot\user\$target.txt“,“$msg“)
První parametr – $removepoints() – dělá přesně to, co říká, a odebírá body (nebo měnu) uživateli, který zadává příkaz. V tomto případě odstraní 100 zásob (pokud jich uživatel má dostatek) a vrátí zprávu jak v případě, že má, tak v případě, že nemá dostatek zásob. Liší se v tom, že zadává cíl zprávy. Podívejme se na to blíže:
- „$user“ – spojuje parametr $removepoints() s uživatelem, který zadává příkaz
- „min“, „max“ – v mém parametru nastavuje minimální a maximální výplatu po 100 zásobách, takže se nemění
- „succeed“ – „$value supplies blah blah $target blah ‚$msg'“ vezme jakoukoli částku odebranou z měny (100) a zobrazí ji ve zprávě v chatu spolu se zprávou o úspěchu. Parametr $target sdělí systému, komu má být zpráva zaslána. Parametr $msg přetiskne jakoukoli zprávu, kterou uživatel nastavil, aby ji viděl. Zahrnul jsem to, aby věděli, že se to změnilo.
- „fail“ – „You do no bla bla“ je zpráva, pokud uživatel nemá 100 zásob (opět rádi hrají)
- „forceremove“ – „false“ umožňuje uživatelům, aby nemohli nakupovat, pokud nemají dostatek zásob. Nastavení této hodnoty na „True“ by umožnilo přejít do záporné měny.
Druhý parametr nám umožní uložit zprávu do dokumentu .txt označeného tentokrát jako jméno cíle ($target.txt) pomocí parametru $overwritefile(„FileLocation“, „Text“). Podívejme se na to blíže:
- $overwritefile(„FileLocation“) – použitím parametru $overwritefile místo $savetofile může uživatel tuto zprávu kdykoli změnit.
- „text“ – „$cíl: $msg“ tyto dva parametry uloží uživatelské jméno cíle a zprávu, kterou napsal, aby je později oba vypsal na obrazovku.
V samotném příkazu !buyotherwelcome jednoduše vložíte $readline(FileLocation) a nasměrujete ho na vytvořený dokument (v mém případě buyotherwelcome.txt). A to je vše, co musíte udělat, aby to fungovalo.
!MYWELCOME
Nakonec jsem chtěl, aby moji následovníci viděli svou zprávu, i když to bylo po vstupu do chatu, už jen proto, že chtějí mít možnost vidět, že to fungovalo. Jedná se o velmi jednoduchou věc, kterou lze nastavit. Postup je následující:
Vytvořte příkaz, v mém případě je to !mywelcome, a vložte do něj parametr $readrandline(FileLocation). Uvnitř jej jednoduše nasměrujte na složku, v níž jsou uloženy všechny uvítací zprávy uživatelů (u mě \user\), přičemž na konci je příkaz $user.txt. Moje vypadají například takto:
$readrandline(C:\Users\JoininMotion\Documents\Ankhbot\users\$user.txt)
To je vše. Když nyní uživatel zadá příkaz !mywelcome, zobrazí se mu jeho vlastní uvítací zpráva.
SAMOSTATNÝ STROJ
Podle výše nastavené cesty budete moci vytvořit vlastní (téměř) zcela autonomní uvítací zprávu vytvořenou uživatelem. Možná někdy v budoucnu, pokud se Marcin rozhodne pokračovat v upgradu Ankhbota, budeme moci vytvořit skutečně zcela autonomní systém. Do té doby nám pro všechny intenzivní účely bude muset prozatím stačit toto.