Ny til Python, mangler hjælp til store/små bokstaver og if under if.
Hejsa alle
Jeg er fuldstændig grøn til Python og kunne godt bruge lidt hjælp. Jeg er i gang med en lille bot til min IRC kanel, og den virker indtil videre rigtig simpelt.
1. spørgsmål: I nedenstående kode kan I se, at man f.eks kan skrive !Hej, !Botnak ircnick eller !MrMusic. Men det skal skrives fuldstændig som angivet i koden. Hvordan gør man så, det er ligemeget om man skriver mRmUsic eller MrMusic? Altså så den er ligeglad med store og små bokstaver.
2. spørgsmål Hvordan laver jeg en IF statement under elif: elif data.find(':!Botnak') !=-1: t = data.split(':!Botnak') to = t[1].strip() ircMessage(str(to)+ ' er en Botnak'+'!', mainchannel)
Jeg vil gerne at hvis man skriver !Botnak MITNICK - så skal den i stedet for ircMessage(str(to)+ ' er en Botnak'+'!', mainchannel) skrive ircMessage('MITNICK er ikke en botnak')
Koden (Hvis ikke det er nok, kan jeg godt poste resten ovenover dette) while True: data = irc.recv(4096) print data try: if "PING" in data: rawSend("PONG")
if "You have not registered" in data: Initialize()
if "!testcmd" in data: ircMessage("tester", mainchannel)
elif "PRIVMSG "+mainchannel+" :!Hej" in data: ircMessageMe(" siger hej til alle.", mainchannel)
elif data.find(':!Botnak') !=-1: t = data.split(':!Botnak') to = t[1].strip() ircMessage(str(to)+ ' er en Botnak'+'!', mainchannel)
elif data.find(':!MrMusic') !=-1: t = data.split(':!MrMusic') to = t[1].strip() ircMessageMe('MrMusic synes ' +str(to)+ ' er en cool person'+'....', mainchannel) except: continue
Jeg må indrømme jeg kommer til kort. Jeg har prøvet mange ting nu. Det lykkedes ikke rigtig. Kan du evt. guide mig lidt i forhold til ovenstående kode.
Er det f.eks elif data.find(':!Botnak').lower() !=-1:
Nu kender jeg jo desværre ikke hele din kode, men hvis data, er den data du får fra brugeren, altså når de indtaster inputs...
Så kunne du lave:
lower_data = data.lower() # Laver alt tekst til lowercase if '!botnak' in lower_data: # Tjekker om !botnak er i teksten fra brugeren print "Brugeren skrev !botnak i en kommando"
while True: data = irc.recv(4096) print data try: if "PING" in data: rawSend("PONG")
if "You have not registered" in data: Initialize()
if "!kaff" in data: list = ['ikke noget med at spilde', 'kommer med en underkop.. Ingen kaffepletter tak', 'har du gemt lidt kaffe til mig', 'skal jeg hente noget sukker eller floede'] randomitem = random.choice(list) ircMessageMe(' kigger... ' +randomitem, mainchannel) ; sleep(3)
elif data.find(':!morn') !=-1: t = data.split(':!morn') to = t[1].strip() ircMessageMe(' siger ogsaa godmorgen', mainchannel) ; sleep(3)
elif "PRIVMSG "+mainchannel+" :!Hej" in data: ircMessageMe(" siger hej til alle.", mainchannel)
elif data.find(':!Botnak') !=-1: t = data.split(':!Botnak') to = t[1].strip() if str(to) == 'BASEMi': ircMessageMe('mener ikke ' +str(to)+ ' er en botnakke'+'!', mainchannel) else: ircMessage(str(to)+ ' er en Botnak'+'!', mainchannel)
elif data.find(':!MrMusic') !=-1: t = data.split(':!MrMusic') to = t[1].strip() if str(to) == 'Twingo': ircMessageMe(' synes ' +str(to)+ ' er saa cool'+','+' han burde vaere staff', mainchannel) else: ircMessageMe(' synes ' +str(to)+ ' er en cool person'+'....', mainchannel)
elif data.find(':!Plade') !=-1: t = data.split(':!Plade') to = t[1].strip() list = ['Hansi Hinterseer', 'hittet ' +':'+ ' Boombastic', 'Bamses venner', 'Hurdy Gurdy', 'The Raveonettes', 'Toy-Box', 'Tina Dickow', 'Sharin Foo', 'Caroline Henderson'] randomitem = random.choice(list) ircMessageMe(' stikker ' +str(to)+ ' en plade med ' + randomitem + '...', mainchannel)
Prøv at lav en print(type(data)) og se hvad type data er. Mit gæt er en string, men det kan måske være bytes eller lign... Men du kunne overveje allerede der, at lave: data = data.lower() Så vil data indeholde "lowercase" af alt tekst, som dit bot har modtaget.
Hvis jeg indsætte data = data.lower() lige under data = irc.recv(4096), betyder det at mit NICK bliver lavet om til små bokstaver, og så kan jeg ikke lave nick identify på serveren.
print(type(data)) - denne er ikke forstået? Skal det indtastes i SSH eller IRC?
while True: data = irc.recv(4096) lower_data = data.lower() print data try: if "PING" in data: rawSend("PONG")
if "You have not registered" in data: Initialize()
if "!testcmd" in data: ircMessage("tester", mainchannel)
if lower_data.find(':!kaff') !=-1: t = lower_data.split(':!kaff') to = t[1].strip() nick = str(data.split(':')[1].split('!')[0]) ircMessageMe(' serverer en friskbrygget kop kaffe til ' + str(nick)+'.', mainchannel)
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.