TypeError: ne peut pas concat octets de str, essayez d'utiliser python3
Si le site suivant explique comment faire un bot irc, à l'aide de socket, mais il ne fonctionne que pour python2, j'ai donc essayé de le rendre compatible, mais je reçois le message d'erreur mentionné dans le titre.
Voici mon code:
import socket
# Some basic variables used to configure the bot
server = "irc.freenode.net" # Server
channel = "#volafile"
botnick = "Mybot" # Your bots nick
def ping(): # This is our first function! It will respond to server Pings.
ircsock.send(b"PONG :pingis\n")
def sendmsg(chan , msg): # to the channel.
ircsock.send(b"PRIVMSG "+ chan +b" :"+ msg +b"\n")
def joinchan(chan): # This function is used to join channels.
ircsock.send(b"JOIN "+ chan + b"\n")
def hello(): # This function responds to a user that inputs "Hello Mybot"
ircsock.send(b"PRIVMSG "+ channel + b" :Hello!\n")
ircsock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
ircsock.connect((server, 6667)) # Here we connect to the server using the port 6667
ircsock.send(b"USER "+ botnick + b" "+ botnick + b" "+ botnick + b" :This bot is a result of a tutoral covered on http://shellium.org/wiki.\n") # user authentication
ircsock.send(b"NICK "+ botnick + b"\n") # here we actually assign the nick to the bot
joinchan(channel) # Join the channel using the functions we previously defined
while 1: # Be careful with these! it might send you to an infinite loop
ircmsg = ircsock.recv(2048) # receive data from the server
ircmsg = ircmsg.strip(b'\n\r') # removing any unnecessary linebreaks.
print(ircmsg) # Here we print what's coming from the server
if ircmsg.find(b":Hello "+ botnick) != -1:
hello()
if ircmsg.find(b"PING :") != -1: # if the server pings us then we've got to respond!
ping()
Le message d'erreur:
Traceback (most recent call last):
File "irctest.py", line 23, in <module>
ircsock.send(b"USER "+ botnick + b" "+ botnick + b" "+ botnick + b" :This botis a result of a tutoral covered on http://shellium.org/wiki.\n") # user authentication
TypeError: can't concat bytes to str
OriginalL'auteur IThelp | 2014-07-30
Vous devez vous connecter pour publier un commentaire.
botnick
n'est pas une valeur d'octets, mais une chaîne de caractères:Faire un octets littérale par l'ajout d'un
b
en avant:OriginalL'auteur Martijn Pieters