TypeError 'int' object is not iterable

Рейтинг: 0Ответов: 1Опубликовано: 07.02.2023

При добавлении int значения выбивает ошибку

баг:

Traceback (most recent call last):
  File "c:\Users\Максимка\Desktop\JinaPiar\main.py", line 21, in <module>
    asyncio.run(main())
  File "C:\Users\Максимка\AppData\Local\Programs\Python\Python310\lib\asyncio\runners.py", line 44, in run
    return loop.run_until_complete(main)
  File "C:\Users\Максимка\AppData\Local\Programs\Python\Python310\lib\asyncio\base_events.py", line 646, in run_until_complete       
    return future.result()
  File "c:\Users\Максимка\Desktop\JinaPiar\main.py", line 17, in main
    users_can_write += users_get[0]['id']
TypeError: 'int' object is not iterable

main.py:

import vk_api
import asyncio
import time
from random import uniform
from settings import user_token, group_id
from cmds import *

async def main():
    vk_session = vk_api.VkApi(token=user_token)
    api = vk_session.get_api()
    users = await get_users(api, group_id=group_id, count=3)
    users_can_write = []
    for user in users:
        users_get = api.users.get(user_ids=user, fields='can_write_private_message')
        if users_get[0]['can_write_private_message'] == 1:
            print(users_get)
            users_can_write += users_get[0]['id']
        else:
            pass

asyncio.run(main())

cmds.py:

async def get_users(api, group_id, count=None):
    users = api.groups.getMembers(group_id=group_id, count=count)
    return users['items']

Ответы

▲ 1Принят

У вас ошибка вот в чём: users_can_write - это массив и к нему вы пытаетесь прибавить число (id пользователя).

Если вы хотите добавить элемент в массив, то нужно воспользоваться методом .append(...)

async def main():
    vk_session = vk_api.VkApi(token=user_token)
    api = vk_session.get_api()
    users = await get_users(api, group_id=group_id, count=3)
    users_can_write = []
    for user in users:
        users_get = api.users.get(user_ids=user, fields='can_write_private_message')
        if users_get[0]['can_write_private_message'] == 1:
            print(users_get)
            users_can_write.append(users_get[0]['id'])
        else:
            pass

Чуть подробнее о методах массива и их возможностях можно прочитать здесь.