Задать вопрос
@fanepka
Работаю на Python

Не пониманию, где ошибка в коде?

Ошибка в коде, понять не могу где она..
Traceback (most recent call last):
  File "v2.py", line 14, in <module>
    for event in longpoll.listen():
  File "C:\Users\DNS\AppData\Local\Programs\Python\Python37-32\lib\site-packages\vk_api\longpoll.py", line 621, in listen
    for event in self.check():
  File "C:\Users\DNS\AppData\Local\Programs\Python\Python37-32\lib\site-packages\vk_api\longpoll.py", line 560, in check
    timeout=self.wait + 10
TypeError: can only concatenate str (not "int") to str


Сам код

#!/usr/bin/env python
# -*- coding: utf-8 -*-
import vk_api
from vk_api.longpoll import VkLongPoll, VkEventType
import random
import time
from datetime import datetime, timedelta

vk_session = vk_api.VkApi(token='Токен')
longpoll = VkLongPoll(vk_session, 'Ид группы')
vk = vk_session.get_api()


for event in longpoll.listen():
    if event.type == VkEventType.MESSAGE_NEW:
        print('Сообщение пришло в: ' + str(event.datetime + timedelta(hours=3)))
        print('Текст сообщения: ' + str(event.text))
        print(event.peer_id)
        
        response = event.text.lower()
        if event.from_chat or event.from_user:
            try:
                if response == '/status' or response == '/статус':

                    today = datetime.strftime(datetime.now(), "%d%m%Y")
                    tomorrow = datetime.strftime(datetime.now() + timedelta(days=1), "%d%m%Y")
    
                    vk.messages.send(
                        peer_id=event.peer_id,
                        random_id=random.randint(-2147483648, +2147483648),
                        message='Всего сообщений в данном диалоге : ' +
                                str(vk.messages.search(peer_id=event.peer_id, date=tomorrow, count=1)['count'] + 1) + '\nЗа сегодня: ' +
                                str( vk.messages.search(peer_id=event.peer_id, date=tomorrow, count=1)['count'] + 1 - vk.messages.search(peer_id=event.peer_id, date=today, count=1)['count'] + 1),
                    )
            except:
                pass

            finally:
                time.sleep(3)


Объясните пожалуйста, где они находятся, а также решение их.
  • Вопрос задан
  • 1124 просмотра
Подписаться 1 Простой 2 комментария
Пригласить эксперта
Ответы на вопрос 2
@anerev
can only concatenate str (not "int") to str
Ответ написан
timeout=self.wait + 10
тут с помощью плюсика происходит конкатенация (объединение строк), так как один из элементов принят за строку.
если мы хотим произвести сложение, то оба слагаемых должны быть цифрами.
сделаем-с так:
timeout=int(self.wait) + 10
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Похожие вопросы