Итак, я решил, что хочу сделать бонус под контролем на Python, который я проверил онлайн, и нашел небольшое руководство о том, как это сделать, реплицируя код, чтобы я мог видеть, как он работает, прежде чем переписывать его. Но проблема, с которой я сталкиваюсь, - это когда бот обнаруживает одно из слов, которое я получаю при ошибке ниже. Я не могу понять, что это значит, как объект, похожий на байты, и как я могу форматировать сообщение как таковое.Проблема с форматированием сообщений Twitch bot
Это, скорее всего, очень маленькая вещь, которую я пропустил или что-то не знаю, потому что я не слишком опытен в каком-либо сетевом программировании в настоящее время. Если у кого-то есть какие-либо рекомендации, которые будут высоко оценены.
Ошибка: файла "C: /Users/Daniel/PycharmProjects/twitchBOT/bot.py", строка 45, в обнаружена s.send ("PRIVMSG #buffet_time: это тест") TypeError: байт-подобный объект необходим, а не «» ул
процесс завершится с кодом выхода 1
# boy.py
import cfg
import socket
import re
import time
def chat(sock, msg):
sock.send("PRIVMSG {} :{}".format(cfg.CHAN, msg))
def ban(sock, user):
chat(sock, ".ban {}".format(user))
def timeout(sock, user, secs=1):
chat(sock, ".timeout {}".format(user, secs))
s = socket.socket()
s.connect((cfg.HOST, cfg.PORT))
s.send("PASS {}\r\n".format(cfg.PASS).encode("utf-8"))
s.send("NICK {}\r\n".format(cfg.NICK).encode("utf-8"))
s.send("JOIN {}\r\n".format(cfg.CHAN).encode("utf-8"))
CHAT_MSG = re.compile(r"^:\w+!\[email protected]\w+\.tmi\.twitch\.tv PRIVMSG #\w+ :")
while True:
response = s.recv(1024).decode("utf-8")
if response == "PING :tmi.twitch.tv\r\n":
s.send("PONG :tmi.twitch.tv\r\n".encode("utf-8"))
print("Pong!")
else:
username = re.search(r"\w+", response).group(0)
message = CHAT_MSG.sub("", response)
print(username + ": " + message)
for pattern in cfg.PATT:
if re.match(pattern, message):
print("detected")
s.send(b"PRIVMSG #buffet_time :this is a test")
print("sent")
break
time.sleep(1/cfg.RATE)
#cfg.py
HOST = "irc.twitch.tv" # irc server
PORT = 6667 # irc port#
NICK = "buffet_bot" # twitch name (lower case)
PASS = "oauth:[not showing here of course. ]" # OAuth Token
CHAN = "#buffet_time" # channel to connect to
RATE = (20/30) # delay
PATT = [
r"badword1",
r"badword2"
]
'send (b" text ")' или 'send (" text ".encode (" utf8 "))' исправит это. – ForceBru
не факт, что все команды 's.send()', кроме тех, которые вы написали, имеют строку, за которой следует '.encode (" utf-8 ")' кажутся достаточно любопытными? –
Проблема даже в том, что я закодировал ее utf8, она ничего не посылает в чат, она не возвращает ошибку, но ничего не появляется в чате. Это моя проблема. –