Форум программистов, компьютерный форум, киберфорум
Python
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.55/29: Рейтинг темы: голосов - 29, средняя оценка - 4.55
0 / 0 / 0
Регистрация: 06.03.2017
Сообщений: 1

Must be str, not bytes в python

19.03.2017, 18:05. Показов 5417. Ответов 1
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте я начинающий программист на питоне, и решил написать бот для твича, но столкнулся с ошибкой TypeError: must be str, not bytes
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
import string
from Read import getUser, getMesage
from Socket import openSocket, sendMessage
from Initialize import joinRoom
 
s = openSocket()
joinRoom(s)
readbuffer = ""
while True:
    readbuffer = readbuffer + s.recv(1024).decode()
    temp = string.split(readbuffer, "\n")
    readbuffer = temp.pop()
    for line in temp:
        print(line)
        if "PING" in line:
            s.send(line.replace("PING", "PONG"))
            break
        user = getUser(line)
        message = getMesage(line)
        print (user + "typed :") + message
        if "You Suck " in message:
            sendMessage(s, "No, you suck!")
            break
и

Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
import socket
from Settings import HOST, PORT, PASS, IDENT, CHANNEL
 
def openSocket():
    s = socket.socket()
    s.connect((HOST, PORT))
    s.send("PASS " + PASS + "\r\n".encode())
    s.send("NICK" + IDENT + "\r\n".encode())
    s.send("CHANNEL" + CHANNEL + "\r\n".encode())
    return s
def sendMessage(s, message):
    messageTemp = "PRIVMSG" + CHANNEL + ":" + message
    s.send(messageTemp + "\r\n")
    print("Sent:" ) + messageTemp
ошибка TypeError: must be str, not bytes Помогите пожалуйста

Есть бот для твича на питоне
Python
1
2
3
4
5
6
7
# ----- Settings ----- #
HOST = "irc.twitch.tv"
PORT = 6667
CHAN = "Имя канала"
NICK = "Имя бота"
PASS = "Аутикей"
# -------------------- #
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
import socket
# --------- IRC Functions --------- #
con = socket.socket()
def send_pong(msg):
    con.send(bytes('PONG %s\r\n' % msg, 'UTF-8'))
 
def send_message(chan, msg):
    con.send(bytes('PRIVMSG %s :%s\r\n' % (chan, msg), 'UTF-8'))
 
def send_nick(nick):
    con.send(bytes('NICK %s\r\n' % (nick), 'UTF-8'))
 
def send_pass(password):
    #con.send(bytes('PASS %s\r\n' % (password), 'UTF-8'))
    con.send("PASS {}\r\n".format(password).encode("utf-8"))
def join_channel(chan):
    con.send(bytes('JOIN %s\r\n' % (chan), 'UTF-8'))
 
def part_channel(chan):
    con.send(bytes('PART %s\r\n' % (chan), 'UTF-8'))
 
# -------- Helper functions -------- #
 
def get_sender(msg):
    result = ""
    for char in msg:
        if char == "!":
            break
        if char != ":":
            result += char
    return result
 
def get_message(msg):
    result = ""
    i = 3
    while i < len(msg):
        result += msg[i] + " "
        i += 1
    result = result.lstrip(':')
    return result
 
def parse_message(msg):
    if len(msg) >= 1:
        msg = msg.split(' ')
        options = {'!test': command_test,
                   '!asdf': command_asdf }
        
        # Case-switch operation to determine bot command entered
        if msg[0] in options:
            options[msg[0]]()
 
# --------- Bot Commands --------- #
 
def command_test():
    send_message(CHAN, 'testing stuff')
 
def command_asdf():
    send_message(CHAN, 'asdfasdfasdf')
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
import re
import socket
 
from Functions import *
from ChannelSettings import *
 
con = socket.socket()
con.connect((HOST, PORT))
 
send_pass(PASS)
send_nick(NICK)
join_channel(CHAN)
 
data = ""
 
while True:
    try:
        data = data + con.recv(1024).decode('UTF-8')
        data_split = re.split(r"[~\r\n]+", data)
        data = data_split.pop()
 
        for line in data_split:
            line = str.rstrip(line)
            line = str.split(line)
 
            if len(line) >= 1:
                if line[0] == 'PING':
                    send_pong(line[1])
 
                if line[1] == 'PRIVMSG':
                    sender = get_sender(line[0])
                    message = get_message(line)
                    parse_message(message)
 
                    print(sender + ": " + message)
    
    except socket.error:
        print("Socket died")
 
    except socket.timeout:
        print("Socket timed out")
Ошибка
Python
1
2
3
4
5
6
7
8
9
10
11
def send_nick(nick):
    con.send(bytes('NICK %s\r\n' % (nick), 'UTF-8'))
 
def send_pass(password):
    #con.send(bytes('PASS %s\r\n' % (password), 'UTF-8'))
    con.send("PASS {}\r\n".format(password).encode("utf-8"))
def join_channel(chan):
    con.send(bytes('JOIN %s\r\n' % (chan), 'UTF-8'))
 
def part_channel(chan):
    con.send(bytes('PART %s\r\n' % (chan), 'UTF-8'))
Помогите пожалуйста скоро сдача)
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
19.03.2017, 18:05
Ответы с готовыми решениями:

TypeError: must be str, not bytes
Добрый день! Ошибка в коде: Traceback (most recent call last): File &quot;C:/Cloud/Cripto/3.py&quot;, line 53, in &lt;module&gt; print...

TypeError: must be str, not bytes
Здравствуйте. Решил немного улучшить свой код, но мне выдает ошибку - гуглил, но всё безуспешно. Вот сама ошибка: И вот код(в...

Can't concat str to bytes
def post_app(environ, start_response): html = form if environ == 'POST': post_env = environ.copy() ...

1
Эксперт по компьютерным сетям
 Аватар для Jabbson
5907 / 3359 / 1036
Регистрация: 03.11.2009
Сообщений: 10,008
20.03.2017, 00:37
Ну Вы же понимаете, чем отличаются string и bytes? Вот в той строке, на которую ругается Питон, должна быть string.
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
20.03.2017, 00:37
Помогаю со студенческими работами здесь

a bytes-like object is required, not 'str'
del :)

join() argument must be str or bytes, not 'dict'
Есть модели: class Product(models.Model): title = models.CharField(max_length=200, unique=True, verbose_name='Название') ...

TypeError: a bytes-like object is required, not 'str'
Здравствуйте, подскажите как можно исправить:скрипт выдает такую ошибку. import socket from tkinter import * tk=Tk() ...

TypeError: expected str, bytes or os.PathLike object, not _io.BytesIO
Помогите ошибка Traceback (most recent call last): File &quot;python100new.py&quot;, line 43, in &lt;module&gt; File &quot;hooman\hooman.py&quot;,...

Как избавиться от ошибки TypeError: expected str, bytes or os.PathLike
Решил написать простенькое приложение в целях практики и изучения Python и Pyqt5 Что делает приложение: извлекает файл, добавляет туда...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Новые блоги и статьи
Загрузка PNG с альфа-каналом на SDL3 для Android: с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
Загрузка PNG с альфа-каналом на SDL3 для Android: с помощью SDL3_image
8Observer8 27.01.2026
Содержание блога SDL3_image - это библиотека для загрузки и работы с изображениями. Эта пошаговая инструкция покажет, как загрузить и вывести на экран смартфона картинку с альфа-каналом, то есть с. . .
влияние грибов на сукцессию
anaschu 26.01.2026
Бифуркационные изменения массы гриба происходят тогда, когда мы уменьшаем массу компоста в 10 раз, а скорость прироста биомассы уменьшаем в три раза. Скорость прироста биомассы может уменьшаться за. . .
Воспроизведение звукового файла с помощью SDL3_mixer при касании экрана Android
8Observer8 26.01.2026
Содержание блога SDL3_mixer - это библиотека я для воспроизведения аудио. В отличие от инструкции по добавлению текста код по проигрыванию звука уже содержится в шаблоне примера. Нужно только. . .
Установка Android SDK, NDK, JDK, CMake и т.д.
8Observer8 25.01.2026
Содержание блога Перейдите по ссылке: https:/ / developer. android. com/ studio и в самом низу страницы кликните по архиву "commandlinetools-win-xxxxxx_latest. zip" Извлеките архив и вы увидите. . .
Вывод текста со шрифтом TTF на Android с помощью библиотеки SDL3_ttf
8Observer8 25.01.2026
Содержание блога Если у вас не установлены Android SDK, NDK, JDK, и т. д. то сделайте это по следующей инструкции: Установка Android SDK, NDK, JDK, CMake и т. д. Сборка примера Скачайте. . .
Использование SDL3-callbacks вместо функции main() на Android, Desktop и WebAssembly
8Observer8 24.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
моя боль
iceja 24.01.2026
Выложила интерполяцию кубическими сплайнами www. iceja. net REST сервисы временно не работают, только через Web. Написала за 56 рабочих часов этот сайт с нуля. При помощи perplexity. ai PRO , при. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru