私はPythonでツイッチボットを作ってみたかったので、オンラインでチェックし、コードを複製する方法についての少しのガイドを見つけましたので、書き直す前にどのように動作するか見ることができます。しかし、私が実行している問題は、ボットが以下のエラーが出る単語の1つを検出したときです。私はそれがバイトのようなオブジェクトによって何を意味しているのか、どうやってメッセージをフォーマットすることができるのかを理解することはできません。Twitchボットのメッセージフォーマットの問題
これは、私が忘れてしまった、または私が知らない何かが、私が現在ネットワークプログラミングのどのような種類のプログラミングでも経験していないので、ほとんど考えられません。誰かが大いに感謝する指針を持っているならば。
エラー: ファイル "C:/Users/Daniel/PycharmProjects/twitchBOT/bot.py"、ライン45、 にs.send検出( "PRIVMSGの#buffet_time:これはテストです") TypeError例外を:バイトのようなオブジェクトは、ない「str」は終了コードで終了し
プロセスを必要とする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をエンコードしていても実際にチャットに何かを送信してもエラーにはならないが、チャットには何も表示されない。それは私の問題です。 –