Задать вопрос
cen0x
@cen0x
ламер

Как сделать счет до следующего сообщения?

Есть бот, который делает демотиваторы из текста и картинок взятых из беседы, при вводе команды "info", он выдает отчет
Как сделать так, чтобы он считал сколько осталось до след.сообщения?
Пример:
5fe9fc999168a571707302.jpeg
Он должен считывать сообщения из базы, чтобы узнать сколько осталось до следующей генерации, код ниже:
"Генерация при достижении 20 сообщений и 1 фото в базе - if text_lines >= 20 and pic_count >= 1 and text_lines % 20 == 0:"
@bot.on.chat_message()
async def chat_message_handler(message: Message):
    text_length = len(message.text)
    chat_path = f"{dir_to_txt}{message.peer_id}.txt"
    picture_path = f"{dir_to_pic}{message.peer_id}.txt"
    if (
        message.text.startswith("http://")
        or message.text.startswith("https://")
        or message.text.startswith("@")
        or message.text.startswith("vk.com")
        or message.text.startswith("https://vk.com/")
        or message.text.startswith("[id")
        or message.text.startswith("[club")
        or message.text.startswith("/")
    ):
        return
    if 0 < text_length <= 50 and message.from_id > 0:
        with open(chat_path, "a", encoding="utf8") as f:
            f.write(message.text + "\n")

        with open(picture_path, encoding="utf8") as f:
            pic_count = len(f.readlines())
        with open(chat_path, encoding="utf8") as f:
            text_lines = len(f.readlines())

        if text_lines >= 20 and pic_count >= 1 and text_lines % 20 == 0:
            print(message.from_id)
            print("ГЕНЕРИРУЕМ РАНДОМНО")
            with open(chat_path, encoding="utf8") as file:
                texts = file.read().splitlines()
            random_text = random.choice(texts)
            random_bottom_text = random.choice(texts) + " " + random.choice(texts)
            with open(picture_path, encoding="utf8") as file:
                pictures = file.read().splitlines()
            random_picture = random.choice(pictures)
            response = requests.get(random_picture)

            random_filename = f"randomimg_{random.randint(0, 10000000000000000000000000)}.jpg"
            with open(random_filename, "wb") as f:
                f.write(response.content)

            dem_filename = f"result_{random.randint(0, 10000000000000000000000000)}.jpg"
            random_text_len = len(random_text)
            if random_text_len <= 50:
                dem = demcreate(random_text, random_bottom_text)
                dem.makeImage(random_filename.rstrip(".jpg"))
                add_watermark_and_rename(result_filename=dem_filename)
                photo = await photo_uploader.upload_message_photo(dem_filename)
                await message(attachment=photo)
                os.remove(dem_filename)
                os.remove(random_filename)
                return
            else:
                random_bottom_text_short = random_text[:50]
                dem = demcreate(random_text, random_bottom_text_short)
                dem.makeImage("randomimg")
                add_watermark_and_rename(result_filename=dem_filename)
                photo = await photo_uploader.upload_message_photo(dem_filename)
                await message(attachment=photo)
                os.remove(dem_filename)
                os.remove(random_filename)
                return


Команда info:
@bot.on.chat_message(lower=True, text=["инфо", "info", "i", "/info"])
async def info(message: Message):
    chat_path = f"{dir_to_txt}{message.peer_id}.txt"
    picture_path = f"{dir_to_pic}{message.peer_id}.txt"
    with open(picture_path, encoding="utf8") as f:
        pic_count = len(f.readlines())
    with open(chat_path, encoding="utf8") as f:
        text_count = len(f.readlines())
    await message(
        f"айди чата: {message.peer_id - 2000000000}\nсохранено {text_count} строк и {pic_count} фото (если числа не меняются, проверьте, выдали ли вы боту админку)"
    )

Как это выглядит:
5fe9fd88f2926189773602.jpeg
  • Вопрос задан
  • 75 просмотров
Подписаться 1 Средний 2 комментария
Пригласить эксперта
Ваш ответ на вопрос

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

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