Как можно создать счетчик времени, который будет обновляться ежедневно?

Как реализовать в боте на Python для Discord функционал, который позволит отслеживать время до следующего рестарта сервера в 10:00 каждый день? Как форматировать это время в формате таймштампа Discord? Я пытался использовать модуль `datetime`, но у меня ничего не получилось из-за моего недостаточного опыта. Подскажите, пожалуйста, как это сделать.
  • 17 августа 2024 г. 1:03
Ответы на вопрос 2
Для создания счетчика времени, который будет обновляться ежедневно, вы можете использовать модуль `datetime` в Python. Ниже приведен пример кода, который позволит вам создать счетчик времени, обновляющийся каждый день:

```python
import datetime
import time

current_day = datetime.datetime.today().day

while True:
    if datetime.datetime.today().day != current_day:
        current_day = datetime.datetime.today().day
        # Ваш код для обновления счетчика времени каждый день здесь
    time.sleep(1)
```

Теперь, чтобы добавить функционал отслеживания времени до следующего рестарта сервера в 10:00 каждый день в боте на Discord, вы можете модифицировать данный код. Вот пример кода, который позволит вам сделать это:

```python
import discord
from discord.ext import commands
import datetime
import time

bot = commands.Bot(command_prefix='!')

@bot.event
async def on_ready():
    print('Бот готов')

    restart_time = datetime.datetime.now().replace(hour=10, minute=0, second=0, microsecond=0)
    time_until_restart = restart_time - datetime.datetime.now()

    await bot.change_presence(activity=discord.Game(f'Time until restart: {time_until_restart}'))

    while True:
        if datetime.datetime.now() > restart_time:
            restart_time = restart_time + datetime.timedelta(days=1)
            time_until_restart = restart_time - datetime.datetime.now()
            await bot.change_presence(activity=discord.Game(f'Time until restart: {time_until_restart}'))
            
        time.sleep(1)

@bot.command()
async def ping(ctx):
    await ctx.send('Pong!')

bot.run('TOKEN')
```

В этом коде создается бот на Discord, который выводит время до следующего рестарта сервера в 10:00 каждый день в статусе бота. Функция `datetime.timedelta(days=1)` используется для добавления 1 дня к текущему времени и таким образом рассчитывается время до следующего рестарта.

Чтобы форматировать время в формате таймштампа Discord, просто используйте `f'{time_until_restart}'`, как показано в примере кода выше. Это автоматически отформатирует время в удобочитаемом формате.
делай через cron как все обычно это делают
Похожие вопросы