Skip to content

Commit

Permalink
Add message timestamp check to prevent execution of outdated commands
Browse files Browse the repository at this point in the history
  • Loading branch information
Isrofilov committed Aug 29, 2024
1 parent f4fa9f8 commit 3daa496
Showing 1 changed file with 15 additions and 2 deletions.
17 changes: 15 additions & 2 deletions WinControlBot.pyw
Original file line number Diff line number Diff line change
Expand Up @@ -2,9 +2,11 @@ from telegram import Update
from telegram.ext import Application, CommandHandler, MessageHandler, filters
import os
import uptime
from datetime import datetime, timezone

TOKEN = 'YOUR_TELEGRAM_BOT_TOKEN_HERE'
AUTHORIZED_USERS = [User1,User2,User3]
TIME_THRESHOLD = 5 * 60

translations = {
'en': {
Expand All @@ -13,15 +15,17 @@ translations = {
'sleep': 'The computer will be put to sleep...',
'hibernate': 'The computer will be hibernated...',
'shutdown': 'Shutting down the computer...',
'uptime': 'System uptime: {days} days {hours} hours {minutes} minutes {seconds} seconds'
'uptime': 'System uptime: {days} days {hours} hours {minutes} minutes {seconds} seconds',
'retry_request': 'Your request was sent too long ago. Please repeat the request.'
},
'ru': {
'unauthorized': 'У вас нет прав для выполнения этой команды.\nВаш userId {user_id}',
'commands': '/uptime - Получить время работы системы\n/sleep - Перевести в режим сна\n/hibernate - Перевести в режим гибернации\n/shutdown - Выключить компьютер',
'sleep': 'Компьютер будет отправлен в режим сна...',
'hibernate': 'Компьютер будет отправлен в режим гибернации...',
'shutdown': 'Выключаю компьютер...',
'uptime': 'Время работы системы: {days} дней {hours} часов {minutes} минут {seconds} секунд'
'uptime': 'Время работы системы: {days} дней {hours} часов {minutes} минут {seconds} секунд',
'retry_request': 'Ваш запрос был отправлен слишком давно. Пожалуйста, повторите запрос.'
}
}

Expand All @@ -34,6 +38,15 @@ async def is_user_authorized(user_id: int) -> bool:
async def handle_command(update: Update, message_key: str, action=None, **kwargs) -> None:
user_id = update.effective_user.id
language_code = update.effective_user.language_code

message_date = update.message.date.replace(tzinfo=timezone.utc)
current_time = datetime.now(timezone.utc)
time_difference = (current_time - message_date).total_seconds()

if time_difference > TIME_THRESHOLD:
await send_reply(update, 'retry_request', language_code)
return

if await is_user_authorized(user_id):
await send_reply(update, message_key, language_code, **kwargs)
if action:
Expand Down

0 comments on commit 3daa496

Please sign in to comment.