@Mannequina

Как исправить ошибку «AttributeError: 'set' object has no attribute 'items'» в дискорд-боте?

Код:
import requests 

channelID = Заполнено валидным айди канала
headers = {"Токен есть если что"}

with open('text.txt', 'r', encoding='utf-8') as file:
    lines = [line.strip() for line in file]

for lines in lines:
    requests.post(f"https://discord.com/api/v9/channels/{channelID}/messages", headers = headers, json = {"content": lines})

Выходит такая вот ошибка при попытке запуска:
Traceback (most recent call last):
  File "d:\Desktop\Новая папка\discordbot.py", line 10, in <module>
    requests.post(f"https://discord.com/api/v9/channels/{channelID}/messages", headers = headers, json = {"content": lines})
  File "C:\Users\User\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.11_qbz5n2kfra8p0\LocalCache\local-packages\Python311\site-packages\requests\api.py", line 115, in post        
    return request("post", url, data=data, json=json, **kwargs)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\User\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.11_qbz5n2kfra8p0\LocalCache\local-packages\Python311\site-packages\requests\api.py", line 59, in request      
    return session.request(method=method, url=url, **kwargs)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\User\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.11_qbz5n2kfra8p0\LocalCache\local-packages\Python311\site-packages\requests\sessions.py", line 575, in request    prep = self.prepare_request(req)
           ^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\User\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.11_qbz5n2kfra8p0\LocalCache\local-packages\Python311\site-packages\requests\sessions.py", line 486, in prepare_request
    p.prepare(
  File "C:\Users\User\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.11_qbz5n2kfra8p0\LocalCache\local-packages\Python311\site-packages\requests\models.py", line 369, in prepare  
    self.prepare_headers(headers)
  File "C:\Users\User\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.11_qbz5n2kfra8p0\LocalCache\local-packages\Python311\site-packages\requests\models.py", line 489, in prepare_headers
    for header in headers.items():
                  ^^^^^^^^^^^^^
AttributeError: 'set' object has no attribute 'items'
  • Вопрос задан
  • 130 просмотров
Пригласить эксперта
Ответы на вопрос 2
fenrir1121
@fenrir1121
Начни с документации
Почитайте этот пример, запустите его и посмотрите на результат
s = {'123'}
d = {'token': '123'}
print(type(s))
print(type(d))


Вы явно хотите использовать словарь, но создали вместо этого множество о чем вам написано в ошибке.
Ответ написан
Комментировать
phaggi
@phaggi Куратор тега Python
лужу, паяю, ЭВМы починяю
В вашем коде несколько ошибок, одна из них - в качестве headers ожидается структура типа «словарь» («dict»), а вы создаете тип «множество» («set»).
Должно быть что-то вроде:
headers = {'user-agent': 'my-app/0.0.1', 'token': 'Токен есть если что'}

и так далее, это прям из документации по requests

Вторая ошибка - for lines in lines:
очевидно надо что-то вроде
for line in lines:
    …json = {"content": line}


Исходя из всего этого видно, что хорошо бы разобраться со структурами вообще и в python со стандартными встроенными типами структур в частности, а также с итераторами и итерацией.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы