Ограничение на ввод команды раз в часpython
У бота для Амино есть команда, которая рандомно прибавляет человеку несколько плюшек и записывает в базу данных sqlite3. Как сделать ограничение на ввод этой команды для человека. К примеру если он вводит ее, то запускается таймер для конкретного человека и при повторном запуске от его id выводится в чат сообщение с количеством минут, которое нужно подождать. Фильтрация по id в БД.
import amino
import gtts
import requests
import threading
import time
import sqlite3
import os
import random
import pyowm
import wikipedia
from pyowm import OWM
from termcolor import colored
from gtts import gTTS
from pyowm.commons.enums import SubscriptionTypeEnum
from pyowm.utils.measurables import kelvin_to_celsius
from threading import Thread
ban = 0
tim = 1
hm = [0]
av = []
nom = 0
WARNS = []
ANTI_SPAM = {}
JOIN_LEAVE_DETECTOR = {}
working = False
def on_message(data: amino.objects.Event):
global ban
global tim
global nom
global y
chatId: str = data.message.chatId
nickname: str = data.message.author.nickname
content: str = data.message.content
messageId: str = data.message.messageId
message_time: int = int(data.message.createdTime[17:19])
userId: str = data.message.author.userId
chat_name: str = sub_client.get_chat_thread(chatId).title
user_id = data.message.author.userId
db = sqlite3.connect('game.db')
sql = db.cursor()
sql.execute("""CREATE TABLE IF NOT EXISTS users (
nickname TEXT,
id TEXT,
chat1 INTEGER NOT NULL DEFAULT 1
)""")
db.commit()
def get_chat(chatId):
index = 0
for i in range(len(mas)):
if chatId == mas[i]:
index = i
return "chat" + str(index + 1)
working = False
@client.event('on_text_message')
def on_text_message(data):
global working
if data.message.content == '!game' and not working:
chatId = data.message.chatId
chat = get_chat(chatId)
working = True
db = sqlite3.connect('warning.db')
sql = db.cursor()
y= random.randint(0,100)
warn = 0
msg=data.json
userWarnId=data.message.author.userId
nic = data.message.author.nickname
sql.execute(f"SELECT id FROM users WHERE id = '{userWarnId}'")
if sql.fetchone() is None:
sql.execute(f"INSERT INTO users VALUES (?, ?, ?)", (nic, userWarnId, 0))
print("!")
db.commit()
print(f' - Нарушитель {nic} добавлен в базу -')
else:
for i in sql.execute(f"SELECT {chat} FROM users WHERE id = '{userWarnId}'"):
warn = i[0]
print(f"> {nic} получил предупреждение")
warn += y
sql.execute(f"UPDATE users SET {chat} = {warn} WHERE id = '{userWarnId}'")
db.commit()
sub_client.send_message(message=f'У {nic} сейчас {warn} токенов', chatId=chatId)
working = False