HomeHome   FAQFAQ   SearchSearch   RegisterRegister   Log inLog in 
-= Hur skapar man en IRC Bot =- Förnyad Guide

 
Post new topic   Reply to topic    Swedish Maffia Forum Index -> Guides
View previous topic :: View next topic  
Author Message
Tolle



Joined: 22 Dec 2002
Posts: 3395
Location: Borås, Sweden

PostPosted: Wed Feb 11, 2004 22:02 pm    Post subject: -= Hur skapar man en IRC Bot =- Förnyad Guide Reply with quote

Nybörjarkurs!

Detta är en förnyad guide utav den tidigare och här följer ytterliggare ett par script jag skrev tidigare idag som ni kan använda er utav.
mIRC betyder "Internet Relay Chat" och används som ett chattprogram. I denna guide kommer du få ett par färdiga script som du direkt kan använda dig utav. För att använda dig utav ett script måste du först ha något ställe där du lägger in texten på. Detta gör du i "Remote" som du lättast får fram om du håller inne tangenten "Alt" och trycker på "R" när du har ditt mircfönster uppe. När du väl gjort detta dyker en vit ruta upp som du kan skriva i. Här skriver du in självaste scriptet (ex. on *:JOIN:#kanal:{ /mode $chan +v $nick }). Vad detta script ger står längre ner i guiden. Nu när du skrivit in scriptet så trycker du på "OK". Observera att scriptet inte fungerar på din bot-klient utan du måste ha en annan klient som kan testa kommandot.

Text:
Om du vill skapa ett eget "on text" -script så är det bra att veta hur du ska skriva de. I normalt fall ser det ut såhär: on *:TEXT:blablablabla
Men vad händer om du har en stjärna istället för "TEXT" eller om du har två stjärnor på varsin sida om texten? Svaret får du nedan.

* = Passar in på hela texten
& = Passar in på alla ord.
text = Passar in om texten endast innehåller ett ord
text* = Passar in om texten startar med detta ordet
*text = Passar in om texten slutar med detta ordet
*text* = Passar in vart än texten är

När du skriver ett script så måste scriptet var helt och inget tecken får vara felsatt. En utav de större orsakerna till varför inte script fungerar som de ska är för att tecknet "{" eller "}" finns med, eller att det finns för många åt ena sidan. Finns det en "{" så måste det även avslutas med ett "}".


Vill du att boten ska visa vilka som är medlemmar i din klan i chatten när någon skriver ett kommando? Läs då nedan.

on *:TEXT:!medlemmar*:#kanal:{ msg $chan Våra medlemmar är: Lennart, Hugo, Petter, Rune och Kalle }

Du kan även skriva som nedanstående:

on *:TEXT:!medlemmar*:#kanal: /msg $chan Våra medlemmar är: Lennart, Hugo, Petter, Rune och Kalle

Om du vill skicka en notice till någon när han skriver "!medlemmar" istället för att skriva ut det i kanalen så skriver du som följande:

on *:TEXT:!medlemmar*:#kanal:{ notice $nick Våra medlemmar är: Lennart, Hugo, Petter, Rune och Kalle }

Vill du göra flera kommandon samtidigt när någon skriver ex. "!medlemmar"?

on *:TEXT:!medlemmar*:#kanal:{ notice $nick Våra medlemmar är: Lennart, Hugo, Petter, Rune och Kalle | notice $nick Vill du trya för oss? Prata isf med en op }

Om någon "requestar" något genom att skriva "!request" så kan du välja att spara requesten på datorn och läsa den senare. Detta görs i detta fall automatiskt.

on *:TEXT:!utmana*:#kanal:{ notice $nick Din utmaning är sparad | write utmana.txt $nick $1- }

Detta script skapar en textfil i din mircmapp som döps till requests.txt - Samtidigt ger den en notice till personen och sätter personen i kö. Dessutom ger den ett notice till en person om att någon söker hjälp (ex. en op).

on *:text:!hjälp*:#kanal:{ write requests.txt $nick bad om hjälp: $2- klockan $time den $date | notice $nick -[ Du ligger i kö som nummer $lines(requests.txt) ]- | /msg pr|Tollezone $nick bad om hjälp: $2- }

Om du vill ta bort personen som låg först i kön och flytta den som ligger som 2:a i kön till första person i kön så skriver du "!next". Nu får personen som gått först i kön "+v" tills dess att du skriver "!next". Då försvinner personen ur listan och får "-v".

on @!*:text:!next*:#kanal: { if ($nick isop $chan) mode $chan -v+v $gettok($read(requests.txt,1),1,32) $gettok($read(requests.txt,2),1,32) | write -dl1 requests.txt }

Om du hjälpt alla som stått i kön så kan du nu rensa listan genom att skriva !klar. Nu börjar listan om från början.

on *:text:!klar:#kanal:{ if ($nick isop $chan) { write -c requests.txt | msg $chan -[ Alla förfrågningar om hjälp har blivit besvarade ]- } }

Med scriptet nedan kan alla i kanalen skriva "!list" för att få fram hur många som är i kön. Om kön är tom visas ett notice-meddelande där det står "Listans kö är tom, för hjälp skriv: !hjälp <anledning>"

on *:Text:!list:#kanal:{ if (!$read(requests.txt)) { .notice $nick Listans kö är tom, för hjälp skriv: !hjälp <anledning> } | else { play $chan requests.txt } }

Om du vill att topicen ska ändras om du skriver online så gör du som nedan. Samtidigt som topicen ändras så skriver boten i kanalen att admin är tillbaka. Jag tar mig själv som ett exempel i scriptet.

on *:text:!online:#kanal:{ if ($nick isop $chan) { msg $chan -[ Tollezone är nu tillbaka ]- | topic $chan Välkommen till Tolle's hjälpkanal! För tillfället är Tolle's hjälphörna: Online } }

Här gäller samma sak som ovan, fast tvärtom.

on *:text:!offline:#kanal:{ if ($nick isop $chan) { msg $chan -[ Tollezone är nu upptagen ]- | topic $chan Välkommen till Tolle's hjälpkanal! För tillfället är Tolle's hjälphörna: Offline } }

Här nedan kan du sätta ett "On join" meddelande som skickas till en person när han kommer in i kanalen.

on 1:JOIN:#tolledirekt:{ notice $nick -[ Välkommen till kanalen "TolleDirekt" ]- | notice $nick -[ För hjälp, skriv: !hjälp ]- | notice $nick -[ För att se hur lång kön är, skriv: !list ]- }

Vill du att alla som besöker din kanal ska få voice? Följ då nedanstående text.

on *:JOIN:#kanal:{ /mode $chan +v $nick }

Samma som ovan, men ger op-status istället.

on *:JOIN:#kanal:{ /mode $chan +o $nick }

För att visa din kanals nuvarande topic så kan du skriva in detta i remote och sedan i kanalen skriva "!topic".

on *:text:!topic:#kanal:{ msg $chan Topicen är: $chan($chan).topic

Vill du visa hur många besökare du haft i kanalen under en och samma gång? Lägg då in detta i remote. Rekordet visas varje gång någon slår rekordet. Observera att detta script nollställs om datorn startas om.

On *:Join:#kanal: { if ($nick($chan,0) > %Peak. [ $+ [ $chan ] ]) || (!%Peak. [ $+ [ $chan ] ]) { set %Peak. [ $+ [ $chan ] ] $nick($chan,0) | msg $chan New channel peak ( $+ $nick($chan,0) $+ ) by $nick } }

Vill du att användarna i din kanal ska kunna använda irc som sökmotor åt google? Använd då scriptet nedan: (Tack till Slinzer)

on *:text:!sök*:#kanal:{ if (!$2) { notice $nick Skriv in sökordet }
else {
/notice $nick Klicka här: http://www.google.com/search?q= $+ $2 $+ &ie=UTF-8&oe=UTF-8&hl=da&btnG=Google-s%C3%B8gning
}
}

Har du regler mot vad som får sägas i kanal och inte? Vad ska personen som bryter mot regeln få för straff? Är regelbrottet inte speciellt stort så kan du kasta ut användaren från din kanal. Dock kan användaren återigen gå in i kanalen, men har kanske då lärt sig en läxa.

Ett ord som ofta missbrukas av okunniga personer är ordet "cp". Vill du sparka ut användaren från klanen om han skriver detta?
Följ då nedanstående script:

on *:text:*cp*:#kanal:{ kick $chan $nick }


Det finns massvis av script som man kan använda sig utav men för tillfället så får ni endast dessa. När jag har tid över så lovar jag att fler kommer att läggas till. Har du/ni några frågor om scriptandet? Var så vänlig och ställ frågan/frågorna här.
Lycka till!

_________________
Toalettpapper binder samman människor i samhället.


Last edited by Tolle on Fri Feb 20, 2004 5:38 am; edited 1 time in total
Back to top
View user's profile Send private message Send e-mail Visit poster's website MSN Messenger
sLinzR



Joined: 25 Jan 2003
Posts: 913
Location: Göteborg

PostPosted: Wed Feb 11, 2004 23:21 pm    Post subject: Reply with quote

Då var jag här för att lägga till en sak:

Om någon har requestat och du vet att du inte kan det eller inte har filen etc. kan du skriva !tell och såhär gör du:


on *:text:!tell*:?:{ if ($nick == Slinzer- ) { notice $2- // $nick } }


Med det här: ($nick == Slinzer- ) menas att boten bara kommer att utföra det kommandot om personen som skriver det heter Slinzer-.

Om man är flera personer som ska använda boten kan man på samma sätt som jag lösa det enkelt, jag gjorde bara en ny rad där jag bytte vilket nick det var. Även om man skulle kunna göra detta på ett bättre sätt var det här det bästa jag kunde tänka mig.[/b]
Back to top
View user's profile Send private message
Guest






PostPosted: Thu Feb 12, 2004 2:23 am    Post subject: Reply with quote

Slinzer: Du kan göra t.ex så här:

on 2:text:!tell*:*: { notice $2- // $nick }

Härliga user levels Very Happy
Back to top
Display posts from previous:   
Post new topic   Reply to topic    Swedish Maffia Forum Index -> Guides All times are GMT + 1 Hour
Page 1 of 1

 
Jump to:  
You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum
You cannot attach files in this forum
You can download files in this forum
   
Powered by phpBB © 2001, 2005 phpBB Group
Om Cookies