int() argument must be a string, a bytes-like object or a number, not 'builtin_function_or_method'

Я работаю над ВК Ботом на Python.

Я делаю мини-игру в своём боте, и чтобы не нагружать так сильно свой ПК (сервер держу на ПК пока что) и поэтому решил сделать автокик за бездействие в течении 15 минут.

Написал:

def auto_kick_d(id):
    import vk_api
    import json
    from vk_api.longpoll import VkLongPoll, VkEventType
    from vk_api.utils import get_random_id
    from vk_api.keyboard import VkKeyboard, VkKeyboardColor
    from tokens import main_token
    group_id = 189400545
    import time, os

    idFile = f'.../Data/Users/{id}.dat' # Получение пути к файлу пользователя в БД (База Данных)
    auto_kick_file = f'{s_way}/AutoKick/{id}' # Путь к файлу автокика пользователя (данном файле считается время). s_way = путь к файлам игры
    with open(auto_kick_file, 'w') as f: # Создаём файл автокика
        f.write('900')
    def upload_time(id): # Функция для сброса времени на 15 минут
        auto_kick_file = f'{s_way}/AutoKick/{id}'
        with open(auto_kick_file, 'r') as f:
            path = pathlib.Path(auto_kick_file); path.write_text(path.read_text().replace(f.read(), '900'))
    def get_msg(id): # Получить сообщения (сделал через функцию, чтобы не вставлять всё в цикл for, а то будет каша)
        vk_session = vk_api.VkApi(token = main_token) # Загружаем vk-api ШАГ-1
        vk = vk_session.get_api() # Загружаем vk-api ШАГ-2
        longpoll = VkLongPoll(vk_session) # Загружаем vk-api ШАГ-3
        for event in longpoll.listen(): # Получаем события
            if event.type == VkEventType.MESSAGE_NEW: # Если новое сообщение
                if event.to_me and event.from_user: # Если отправлено сообществу (а не от него) и в лс (а не из беседы)
                    if event.user_id == id: # Если написал нужный пользователь
                        return True
                    else:
                        return False
    while True:
        with open(idFile, 'r') as f:
            botBanned = f.read().splitlines()[8].replace('Забанен для Бота: ', '') # Проверяем причину игнора
        if botBanned == 'Да (Игра)': # Если в игре (main бот и games бот - разные консоли, поэтому, чтобы main не реагировал на сообщения внутри игры, я отправляю пользователя в игнор. лист)
            if get_msg(id): # Если get_msg вернул True, т.е. пользователь написал
                upload_time(id) # Сбрасываем время до 15 минут
            else: # Если False
                with open(auto_kick_file, 'r') as f:
                    if int(f.read()) > 0: # Если время больше 0 секунд
                        path = pathlib.Path(auto_kick_file); path.write_text(path.read_text().replace(f.read(), f'{int(f.read()-1)}')) # -1 секунда времени
                    else:
                        return False # Если написано 0 или меньше, закрываем работу автокика (время вышло)
            time.sleep(1) # Ждём секунду (Для таймера)
        else: # Если причина игнорирования другая (или её вообще нет)
            os.remove(auto_kick_file)
            return False

auto_kick = Thread(target=auto_kick_d, args=(id,)) # Создаём поток
auto_kick.start() # Запускаем поток без поток.join(), чтобы он работал одновременно с другими функциями.

Возвращает: int() argument must be a string, a bytes-like object or a number, not 'builtin_function_or_method'

Проблема в том, что Python в таких ошибках просто не указывает строку(-и) из-за которых возникла ошибка.

Можете помочь?


Ответы (0 шт):