
Code : Tout sélectionner
InitNetwork()
;- Declarations
; Constantes
Enumeration
#Messages
#OK
#Envoi
EndEnumeration
; Structure
Structure Infos
Serveur.s
Port.l
Nom.s
CID.l
Salle.s
EndStructure
; Mémoires
*Buffer.l = AllocateMemory(1)
; Variables
Eol.s = Chr(13) + Chr(10)
Global Sortie.b,Message.s,Infos.Infos,Eol,Nombre_De_Messages.f,*Buffer
Infos\Serveur ="irc.memphisnet.org" ;"irc.quakenet.org" ; "irc.memphisnet.org"
Infos\Port = 6667
Infos\Nom = "Barman"
Infos\Salle = "#help"
Infos\CID = OpenNetworkConnection(Infos\Serveur,Infos\Port)
If Infos\CID = 0
End
EndIf
OpenWindow(0,0,0,600,400,#PB_Window_SystemMenu | #PB_Window_MinimizeGadget | #PB_Window_ScreenCentered,"Barman")
CreateGadgetList(WindowID(0))
EditorGadget(#Messages,5,5,590,335)
StringGadget(#Envoi,5,345,520,50,"")
ButtonGadget(#OK,530,345,65,50,"OK")
Procedure Parole(Texte.s)
SendNetworkString(Infos\CID,"PRIVMSG " + Infos\Salle + " :" + Texte + Eol)
EndProcedure
Procedure Bot()
text$ = PeekS(*Buffer)
text$ = LCase(text$)
Nombre_De_Messages + 1
Pseudo.s = StringField(text$,1,"!")
Pseudo = Right(Pseudo,Len(Pseudo) - 1 )
If (FindString(LCase(text$),"salut",1) Or FindString(LCase(text$),"hello",1) Or FindString(LCase(text$),"bonjour",1)) And Pseudo <> Infos\Nom
Parole("Bienvenue à toi " + Pseudo + ",que puis-je pour toi ?")
EndIf
If (FindString(RemoveString(LCase(text$)," "),"aurevoir",1) Or FindString(RemoveString(LCase(text$)," "),"++",1) Or FindString(RemoveString(LCase(text$)," "),"a+",1)) And Pseudo <> Infos\Nom
Select Random(4)
Case 0
Parole("N'oubliez pas le pourboire, merci.")
Case 1
Parole("A bientôt " + Pseudo + ".")
Default
Parole("Aurevoir " + Pseudo + ".")
EndSelect
EndIf
If FindString(RemoveString(LCase(text$)," "),"bonnenuit",1)And Pseudo <> Infos\Nom
If Hour(Date()) < 20 And Hour(Date()) > 8
ParOL.s = "Il n'est pas l'heure de se coucher"
Else
ParOL.s = "Bonne nuit " + pseudo$
EndIf
EndIf
If FindString(text$,"*biberon",1)
Parole("Tiens mon petit")
EndIf
If FindString(text$,"*cafe",1)
Parole("Vous avez raison, ce serait agréable, toutefois je n'ai pas envie d'en servir maintenant.")
EndIf
If FindString(text$,"*heure",1)
Parole("Il est " + Str(Hour(Date())) + "H" + Str(Minute(Date())))
EndIf
If FindString(text$,"*date",1)
Parole("Nous sommes le " + Str(Day(Date())) + "/" + Str(Month(Date())) + "/" + Str(Year(Date())) + " et il est " + Str(Hour(Date())) + "H" + Str(Minute(Date())))
EndIf
If FindString(text$,"*coca",1)
Parole("Un Coca pour " + Pseudo + ".")
EndIf
If FindString(text$,"*biere",1) Or FindString(text$,"*bierre",1)
Parole("Cette biere est-elle assez fraîche " + Pseudo + " ?")
EndIf
If FindString(text$,"*nombre de messages",1)
Parole("Il y a eu " + Str(Nombre_de_Messages) + " messages depuis que je suis en service.")
EndIf
If FindString(text$,"ptin",1) Or FindString(text$,"putain",1) Or FindString(text$,"fuck",1) Or FindString(text$,"ta gueule",1) Or FindString(text$,"encule",1) Or FindString(text$,"enculé",1) Or FindString(text$,"salop",1) Or FindString(text$,"salope",1) Or FindString(text$,"encul",1)
Parole("tu pourrais être plus poli(e) " + Pseudo + ".")
EndIf
If FindString(text$,"shit",1) Or FindString(text$,"cocaine",1) Or FindString(text$,"cocaïne",1) Or FindString(text$,"petard",1)
Parole("La drogue est illégale, mais parfois c'est bien de ce détendre...")
EndIf
If FindString(text$,"*barman help",1)
ParOL.s = "Je répond à un synonyme de " + Chr(34) + "Bonjour" + Chr(34) + Chr(10)
ParOL + "Je répond à " + Chr(34) + "Aurevoir , a+ , ++" + Chr(34) + Chr(10)
Parole("Je donne le biberon à la commande " + Chr(34) + "*Biberon" + Chr(34))
Parole("Je donne l'heure à la commande " + Chr(34) + "*Heure" + Chr(34))
Parole("Je donne le nombre de messages que j'ai vu avec la commande " + Chr(34) + "*Nombre de messages" + Chr(34))
Parole("Je donne un cafe à la commande " + Chr(34) + "*Cafe" + Chr(34))
Parole("Je donne une bierre à la commande " + Chr(34) + "*Biere" + Chr(34))
Parole("Je donne un coca à la commande " + Chr(34) + "*Coca" + Chr(34))
Parole("Je donne de l'aide à la commande " + Chr(34) + "*Barman help" + Chr(34))
Parole("Je donne la date (Jour/Mois/Année) et l'heure à la commande " + Chr(34) + "*Date" + Chr(34))
Parole("Je réagis à certains noms de drogues")
Parole("Je réagis aux insultes")
Parole("Vous n'êtes pas obligés de respecter la casse des commandes.")
EndIf
EndProcedure
Procedure IRC()
Select NetworkClientEvent(Infos\CID)
Case 2
FreeMemory(*Buffer)
*Buffer = AllocateMemory(64000)
ReceiveNetworkData(Infos\CID,*Buffer,64000)
AddGadgetItem(#Messages,-1,PeekS(*Buffer))
; Connection
If FindString(PeekS(*Buffer),"Looking up your hostname",1)
SendNetworkString(Infos\CID,"NICK " + Infos\Nom + EOL)
SendNetworkString(Infos\CID,"USER Fragmentedrain localhost irc_server :SilEntBob" + EOL)
SendNetworkString(Infos\CID,"JOIN " + "mulderland" + EOL)
SendNetworkString(Infos\CID,"JOIN " + Infos\Nom + EOL)
AddGadgetItem(#Messages,-1,"passe")
EndIf
; Ping/Pong
If FindString(PeekS(*Buffer),"PING",1)
Message.s = StringField(PeekS(*Buffer),2,"PING :")
SendNetworkString(Infos\CID,"PONG " + Mid(Message,6,8) + EOL)
EndIf
Bot()
EndSelect
EndProcedure
Repeat
Select WindowEvent()
Case #PB_Event_CloseWindow
Sortie = 1
Case #PB_Event_Gadget
Select EventGadgetID()
Case #OK
Select LCase(GetGadgetText(#Envoi))
Case "join"
SendNetworkString(Infos\CID,"JOIN " + Infos\Salle + EOL)
Default
; SendNetworkString(Infos\CID,"PRIVMSG " + Infos\Salle + " :" + GetGadgetText(#Envoi) + EOL)
SendNetworkString(Infos\CID,GetGadgetText(#Envoi) + EOL)
Debug GetGadgetText(#Envoi) + EOL
EndSelect
SetGadgetText(#Envoi,"")
EndSelect
EndSelect
IRC()
Delay(5)
Until Sortie = 1