didier/functions/database/muttn.py

77 lines
2.2 KiB
Python

from data import constants
from functions.database import utils
import random
def getOrAddUser(userid):
connection = utils.connect()
cursor = connection.cursor()
query = "SELECT * FROM muttn WHERE userid = %s"
cursor.execute(
query, (int(userid),)
)
result = cursor.fetchall()
# User didn't exist yet, so create a new default file
if len(result) == 0:
createNewUser(userid, connection)
return getOrAddUser(userid)
return result[0]
def getAllRows():
connection = utils.connect()
cursor = connection.cursor()
cursor.execute("SELECT * FROM muttn")
return cursor.fetchall()
def createNewUser(userid, connection):
cursor = connection.cursor()
cursor.execute("INSERT INTO muttn(userid, stats, count, message) VALUES (%s, %s, %s, %s)", (
int(userid), random.randint(0, 50) + (random.randint(0, 100)/100), 0, 0,
))
connection.commit()
def muttn(userid, count, messageid):
if str(userid) == constants.didierId:
return
connection = utils.connect()
cursor = connection.cursor()
user = getOrAddUser(userid)
# Dont' allow earlier messages to be spammed to avoid abuse
if messageid < user[3]:
return
# 5 or more = percentage increase
if count >= 5:
# React was removed & added again: don't do anything
# New count is smaller than or equal to old max for this message
if count <= user[4] and messageid == user[3]:
return
cursor.execute("UPDATE muttn SET stats = %s, message = %s, highest = %s WHERE userid = %s",
(float(user[1]) + (random.randint(2, 50) * count/1000), int(messageid), count, int(userid)))
connection.commit()
cursor.execute("UPDATE muttn SET count = %s WHERE userid = %s",
(int(user[2]) + 1, int(userid),))
connection.commit()
def removeMuttn(message):
if str(message.author.id) == constants.didierId:
return
connection = utils.connect()
cursor = connection.cursor()
user = getOrAddUser(message.author.id)
cursor.execute("UPDATE muttn SET count = %s WHERE userid = %s",
(int(user[2]) - 1, int(message.author.id),))
connection.commit()