Omwille van veranderingen in de manier waarop Medium werkt, zal ik deze blog niet langer bijhouden. Je kunt mijn nieuwe blog vinden op https://www.resonantdrifter.com en een directe link naar dit artikel op https://www.resonantdrifter.com/blog/ankhbot-%E2%80%94-creating-an-almost-completely-autonomous-user-created-custom-welcome-message-program/
Omwille van de fusie van Ankhbot met Streamlabs, is dit artikel nu enigszins verouderd, dus heb ik een nieuw artikel gemaakt! Ga alsjeblieft naar de toepasselijke naam “Streamlabs Chatbot – Het creëren van een (bijna) autonoom door de gebruiker gemaakt aangepast welkomstboodschap programma”!
Een tijdje terug besloot ik om mijn Twitch volgers, die ik Drifters noem, een manier te geven om hun eigen welkomstboodschap te maken die, voor een klein bedrag aan valuta (in mijn kanaal supplies genoemd), hen zou begroeten wanneer ze de chat binnenkwamen. Dit zou hen in staat stellen om een deel van die voorraden te besteden aan iets anders dan hinderlagen (de versie van mijn kanaal van heists) en de gemeenschap een beetje meer als de hunne te laten voelen. Natuurlijk leidde dit ook tot het idee dat ze een welkomstboodschap voor andere gebruikers zouden kunnen maken – een leuke manier voor volgers om met andere volgers te rotzooien. Gelukkig heeft Ankhbot een manier opgenomen om welkomstboodschappen (onder andere) op te nemen wanneer specifieke gebruikers je kanaal binnenkomen.
Ik heb dit plan onmiddellijk in gang gezet en het was een succes omdat ik de $removepoints() parameter kon gebruiken om Supplies van hen af te pakken en zij mij het bericht zouden toefluisteren dat zij wilden dat hun welkomstboodschap zou zijn of de gebruikersnaam en het bericht van de andere Drifter. Echter, snel na deze doorbraak (in mijn gedachten), realiseerde ik me dat het bijna onmogelijk zou zijn voor mij om aan hun behoefte te voldoen op een consistente manier zonder het spel herhaaldelijk te onderbreken. Dat leidde me op het pad op zoek naar een manier om een volledig autonome manier te maken voor gebruikers om hun welkomstboodschappen te maken en te veranderen naar believen.
Ik zal eerlijk tegen je zijn: het is niet mogelijk om een volledig autonome door de gebruiker gemaakte aangepaste welkomstboodschap in Ankhbot te maken. Ik heb mijn idee voorgelegd aan Marcin Swierzowski op Twitter en hij bevestigde dat mijn idee gewoon geen vruchten kon afwerpen.
John Paul @resonantdrifter
Al bijna. Heb een manier nodig om het On Join Event per gebruiker automatisch in te stellen om hun specifieke $user.txt te lezen… #ankhbot@AnkhHeart
Ankh Heart @AnkhHeart
@resonantdrifter Dat is niet mogelijk. Je zult handmatig On Join Events moeten aanmaken.
Maar mijn koppigheid hield vol en ik kwam op een manier die de gebruiker in staat zou stellen om zijn (en anderen) eigen aangepaste welkomstboodschap te maken en te wijzigen met ZEER WEINIGE INITIAL SETUP. Het volgende is hoe ik de (Bijna) volledig autonome door de gebruiker gemaakte aangepaste welkomstboodschap heb gemaakt!
Vooreerst en vooral, het meest intensieve deel van deze setup (vooral als je al veel volgers hebt of dagelijks veel volgers krijgt) is het opzetten van de On Join Event lijst. De On Join Event lijst is waar je Ankhbot vertelt wat je wilt dat het doet wanneer een specifieke gebruiker chat binnenkomt. Dit kan helaas niet worden geautomatiseerd en was waar ik vastliep op mijn grote schema. Ik wilde echt dat Ankhbot deze lijst automatisch zou samenstellen uit mijn huidige volgers, maar het automatiseren van dit systeem is gewoon niet mogelijk, dus je zult handmatig een item moeten invoeren voor elke volger. Gelukkig hoef je dit maar één keer per volger te doen. Daarna wordt elk bericht automatisch bijgewerkt.
In het On Join Event systeem moet je voor elk van je volgers een item maken dat je koppelt aan een .txt-document dat hun commando weergeeft wanneer ze de chat binnengaan.
Maak eerst een map aan waarin je alle .txt-documenten wilt opslaan die Ankhbot zal aanmaken. Onthoud, hoewel ze klein zullen zijn (qua bestandsgrootte), zullen er veel bestanden worden aangemaakt (ervan uitgaande dat je veel volgers krijgt). Zodra dit is gebeurd, ga terug naar Ankhbot en maak een commando aan voor elk van je volgers als volgt (hint: alles blijft hetzelfde behalve het Info slot):
- UserGroup: Houdt deze “User_Specific”
- Info: individuele volgers gebruikersnaam
- Client Only: “False” (True betekent dat alleen de gebruiker in staat zal zijn om het te zien)
- Enabled: “True” (False schakelt het uiteraard uit voor die gebruiker)
- Vol: Stel in op elk niveau dat comfortabel is voor u en uw kijkers
- Bericht: $readline(C:\user$user.txt)
Laten we de “Message” slot eens nader bekijken:
$readline(C:\user$user.txt)
De $readline() parameter leest simpelweg de eerste regel in het tekstdocument waar je hem naar wijst. De bestemming wordt tussen haakjes gezet. Dit is een belangrijk onderdeel: door het tekstdocument $user.txt te noemen, kan Ankhbot zoeken naar een .txt document met de naam van de gebruiker (dit komt verderop in dit document nog terug).
Als we eenmaal alle huidige volgers hebben ingevoerd, zijn we klaar. Echter, als we meer volgelingen krijgen moeten we voor elk van hen een nieuwe vermelding maken. Dat is het meeste werk dat we zullen moeten doen op dit bijna autonome systeem.
CHAT COMMANDS
Nu dat we de kern setup, laten we de commando’s waarmee de gebruikers in te stellen en wijzigen van hun welkomstbericht. Gewoon zodat we op dezelfde pagina zitten, mijn commando voor volgers om hun eigen welkomstboodschap te maken is !buywelcome en de valuta in mijn kanaal is supplies.
!BUYWELCOME
Om dit te laten werken moet je eerst een .txt-document maken met daarin twee parameters: $removepoints(“target”, “min”, “max”, “succeed”, “fail”, “forceremove”) en $overwritefile(“FileLocation”, “Text”). Ik heb mijn document buywelcome.txt genoemd en het als volgt ingevuld:
$removepoints(“$user”, “100”, “100”,”$value-voorraden zijn verwijderd uit uw inventaris en uw welkomstboodschap is gewijzigd in ‘$msg'”, “U hebt niet genoeg voorraden in uw inventaris!”, “false”) $overwritefile(“C:\Ankhbot$user.txt”,”$user: $msg”)
De eerste parameter – $removepoints() – doet precies wat hij zegt en verwijdert punten (of valuta) van de gebruiker die het commando invoert. In dit geval verwijdert het 100 Voorraden (als de gebruiker er genoeg heeft) en geeft een bericht terug zowel als ze wel of niet genoeg Voorraden hebben. Laten we eens wat beter kijken:
- “$user” – verbindt de $removepoints() parameter met de gebruiker die het commando invoert
- “min”, “max” – in mijn parameter stelt de minimale en maximale uitbetaling in op 100 supplies elk, zodat het niet varieert
- “succeed” – “$value supplies blah blah ‘$msg'” neemt welk bedrag van de valuta (100) wordt verwijderd en toont het in de in-chat boodschap samen met de succesboodschap. De parameter $msg drukt het bericht af dat de gebruiker heeft ingesteld, zodat ze het kunnen zien. Ik heb dit opgenomen zodat ze weten dat het is veranderd.
- “fail” – “Je doet geen blah blah” is de boodschap als de gebruiker geen 100 voorraden heeft (ze houden van gokken)
- “forceremove” – “false” staat gebruikers toe om niet te kunnen kopen als ze niet genoeg voorraden hebben. Als je dit op “True” zet, kunnen ze in negatieve valuta gaan.
De tweede parameter stelt ons in staat om het bericht op te slaan in een .txt document met de naam van de gebruiker ($user.txt) door gebruik te maken van de $overwritefile(“FileLocation”, “Text”) parameter.
Voordat we hier dieper op ingaan, wil ik eerst iets uitleggen. Weet je nog toen we de On Join Event lijst maakten? We hebben een map gemaakt om alle .txt bestanden in te plaatsen, maar we hebben geen echte tekst bestanden gemaakt. Waarom? Dit zorgt ervoor dat wanneer een gebruiker die niets heeft ingevuld als welkomstbericht, er geen krijgt wanneer hij chat. Laten we eens wat beter kijken:
- $overwritefile(“FileLocation”) – door $overwritefile te gebruiken in plaats van $savetofile kan de gebruiker dit bericht veranderen wanneer hij maar wil.
- “text” – “$user: $msg” deze twee parameters slaan de gebruikersnaam van de gebruiker op en het bericht dat ze getypt hebben om ze later beide op het scherm af te drukken.
In het eigenlijke !buywelcome commando zet je gewoon $readline(FileLocation) en wijst het naar het document dat je gemaakt hebt (in mijn geval, de buywelcome.txt). Dat is alles wat je hoeft te doen om dit te laten werken.
!BUYOTHERWELCOME
Om een leuke en enigszins competitieve ervaring te creëren, wilde ik mijn volgers de mogelijkheid geven om welkomstberichten voor andere gebruikers te maken. Ik wist dat dit erg zou lijken op het !buywelcome commando, maar het zou zijn eigen hordes met zich meebrengen omdat het de ene gebruiker is die een bericht voor een andere maakt. Zo heb ik het opgezet:
Naast het vorige commando maak je een .txt document met de $removepoints(“target”, “min”, “max”, “succeed”, “fail”, “forceremove”) en de $overwritefile(“FileLocation”, “Text”) parameters erin. In tegenstelling tot het vorige commando, zul je het iets anders moeten instellen om het te laten werken. Zo ziet de mijne eruit:
$removepoints(“$user”, “100”, “100”,”$value-voorraden zijn uit je inventaris verwijderd en het welkomstbericht van $target is veranderd in ‘$msg'”, “Je hebt niet genoeg voorraden in je inventaris!”, “false”) $overwritefile(“C:\Users\JohninMotion\Documents\Ankhbot\user$target.txt”,”$msg”)
De eerste parameter – $removepoints() – doet precies wat hij zegt en verwijdert punten (of valuta) van de gebruiker die de opdracht invoert. In dit geval verwijdert het 100 Supplies (als de gebruiker er genoeg heeft) en geeft een bericht terug zowel als ze wel of niet genoeg Supplies hebben. Het verschil is dat er een doel voor het bericht wordt ingevoerd. Laten we eens wat beter kijken:
- “$user” – verbindt de $removepoints() parameter met de gebruiker die het commando invoert
- “min”, “max” – in mijn parameter stelt het minimum en maximum uitbetaling in op 100 supplies elk, zodat het niet varieert
- “succeed” – “$value supplies blah $target blah ‘$msg'” neemt welk bedrag er ook van de valuta (100) wordt verwijderd en toont het in de in-chat boodschap samen met de succesboodschap. $target zal het systeem vertellen naar wie je het bericht wilt sturen. De parameter $msg drukt het bericht af dat de gebruiker heeft ingesteld, zodat hij het kan zien. Ik heb dit toegevoegd zodat ze weten dat het veranderd is.
- “fail” – “U heeft geen blah blah” is de boodschap als de gebruiker geen 100 voorraden heeft (nogmaals, ze houden van gokken)
- “forceremove” – “false” staat gebruikers toe om niet te kunnen kopen als ze niet genoeg voorraden hebben. Door dit op “True” te zetten, kunnen ze in negatieve valuta gaan.
De tweede parameter stelt ons in staat om het bericht op te slaan in een .txt document met de naam van het doelwit deze keer ($target.txt) met behulp van de $overwritefile(“FileLocation”, “Text”) parameter. Laten we eens wat beter kijken:
- $overwritefile(“FileLocation”) – door $overwritefile te gebruiken in plaats van $savetofile kan de gebruiker deze boodschap veranderen wanneer hij maar wil.
- “text” – “$target: $msg” deze twee parameters slaan de gebruikersnaam van het doel op en het bericht dat ze getypt hebben om ze later beide op het scherm af te drukken.
In het eigenlijke !buyotherwelcome commando zet je gewoon $readline(FileLocation) en wijst het naar het document dat je gemaakt hebt (in mijn geval, de buyotherwelcome.txt). En dat is alles wat je hoeft te doen om dit te laten werken.
!MYWELCOME
Ten slotte wilde ik mijn volgers een manier geven om hun bericht te zien, zelfs als ze al in de chat waren, al was het alleen maar omdat ze willen kunnen zien dat het heeft gewerkt. Dit is een zeer eenvoudig ding om op te zetten.
Maak een commando, in mijn geval is dat !mywelcome, en zet daarin de parameter $readrandline(FileLocation). Binnenin wijs je het gewoon naar de map met alle welkomsberichten van gebruikers (voor mij $user.txt) met $user.txt aan het eind. De mijne ziet er bijvoorbeeld zo uit:
$readrandline(C:GebruikersinmotieDocumentenAnkhbotusers$user.txt)
Dat is het. Als een gebruiker nu het commando !mywelcome intypt, krijgt hij zijn eigen welkomstboodschap te zien.
DE ZELFSTANDIGE MACHINE
Door het bovenstaande pad te volgen, kun je je eigen (bijna) volledig autonome, door de gebruiker gemaakte welkomstboodschap maken. Misschien in de toekomst, als Marcin besluit door te gaan met het upgraden van Ankhbot, zullen we in staat zijn om een echt volledig autonoom systeem te maken. Tot die tijd, voor alle intensieve doeleinden, zal dit moeten volstaan voor nu.