@FlensT

Почему не срабатывает Python скрипт в определенное время?

Вообщем проблема такая, у меня есть скрипт, который логинится в дискорд при помощи библиотеки discord.py, но при этом клиент не является ботом. Смысл этого скрипта чтобы он в 9:00 каждого дня ставил "+" в текстовом канале сервера. И он работает, если стоит на пк и поставлено ближайшее время, а не 9:00. Но как только я ставлю его на EC2 от AWS он просто пропускает нужное время и спит. В чём проблема?
Исходный код

import discord
import asyncio
import time

client = discord.Client()

@client.event
async def on_ready():
    print('Client logged as {}'.format(client.user))
    channel = client.get_channel(id=ID КАНАЛА)
    last_days = []
    f = open('log.txt', 'a')
    while True:
        current_day = time.strftime("%d")
        current_hour = time.strftime("%H")
        if current_day not in last_days and current_hour == "9":
            await channel.send("+")
            last_days.append(current_day)
            f.write(f"======================================\n")
            f.write(f"[{time.ctime()}] Sending '+'...\n")
            f.write(f"======================================\n")
        else:
            f.write(f"[{time.ctime()}] Sleeping...\n")
            await asyncio.sleep(60)

client.run("МОЙ ТОКЕН", bot=False)


Небольшой лог

[Tue Nov 17 08:52:12 2020] Sleeping...
[Tue Nov 17 08:53:12 2020] Sleeping...
[Tue Nov 17 08:54:12 2020] Sleeping...
[Tue Nov 17 08:55:12 2020] Sleeping...
[Tue Nov 17 08:56:12 2020] Sleeping...
[Tue Nov 17 08:57:12 2020] Sleeping...
[Tue Nov 17 08:58:12 2020] Sleeping...
[Tue Nov 17 08:59:12 2020] Sleeping...
[Tue Nov 17 09:00:12 2020] Sleeping...
[Tue Nov 17 09:01:12 2020] Sleeping...
[Tue Nov 17 09:02:12 2020] Sleeping...
[Tue Nov 17 09:03:12 2020] Sleeping...
[Tue Nov 17 09:04:12 2020] Sleeping...
[Tue Nov 17 09:05:12 2020] Sleeping...
[Tue Nov 17 09:06:12 2020] Sleeping...
[Tue Nov 17 09:07:12 2020] Sleeping...
[Tue Nov 17 09:08:12 2020] Sleeping...
[Tue Nov 17 09:09:12 2020] Sleeping...
[Tue Nov 17 09:10:12 2020] Sleeping...
[Tue Nov 17 09:11:12 2020] Sleeping...
[Tue Nov 17 09:12:12 2020] Sleeping...
[Tue Nov 17 09:13:12 2020] Sleeping...
  • Вопрос задан
  • 75 просмотров
Решения вопроса 1
Есть подозрение, что в качестве "ближайшего" времени, вы используете двухзначное значение.

%H форматирует текущий час в двухзначном формате (00, 01, …, 23).
https://docs.python.org/3/library/datetime.html#st...
5LUtz43.png

К слову, также:

Событие on_ready может происходить более одного раза:
77NNnwy.png

Использовать while True в асинхронном коде не самая лучшая идея. Используйте asyncio tasks для этого. discord.py имеет расширение для упрощенного управления asyncio tasks: https://discordpy.readthedocs.io/en/stable/ext/tas...
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

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