caches soulscreams in matteo.db, valid for 7 days
This commit is contained in:
parent
30886ce7b9
commit
d0f6ff7f09
5
.gitignore
vendored
5
.gitignore
vendored
|
@ -341,4 +341,7 @@ healthchecksdb
|
|||
|
||||
# Personal config file, contains bot token
|
||||
config.json
|
||||
ids
|
||||
ids
|
||||
|
||||
# database
|
||||
matteo.db
|
75
database.py
75
database.py
|
@ -1,3 +1,76 @@
|
|||
#handles the database interactions
|
||||
|
||||
import os, json, datetime
|
||||
import sqlite3 as sql
|
||||
|
||||
|
||||
def create_connection():
|
||||
#create connection, create db if doesn't exist
|
||||
conn = None
|
||||
try:
|
||||
conn = sql.connect("matteo.db")
|
||||
return conn
|
||||
except:
|
||||
print("oops, db connection no work")
|
||||
return conn
|
||||
|
||||
|
||||
def initialcheck():
|
||||
conn = create_connection()
|
||||
soulscream_table_check_string = """ CREATE TABLE IF NOT EXISTS soulscreams (
|
||||
counter integer PRIMARY KEY,
|
||||
name text NOT NULL,
|
||||
soulscream text NOT NULL,
|
||||
timestamp text NOT NULL
|
||||
); """
|
||||
|
||||
if conn is not None:
|
||||
c = conn.cursor()
|
||||
c.execute(soulscream_table_check_string)
|
||||
|
||||
conn.commit()
|
||||
conn.close()
|
||||
|
||||
|
||||
def get_soulscream(username):
|
||||
conn = create_connection()
|
||||
|
||||
#returns none if not found or more than 3 days old
|
||||
if conn is not None:
|
||||
c = conn.cursor()
|
||||
c.execute("SELECT * FROM soulscreams WHERE name=?", (username,))
|
||||
scream = c.fetchone()
|
||||
|
||||
try:
|
||||
cachetime = datetime.datetime.fromisoformat(scream[3])
|
||||
print(datetime.datetime.now(datetime.timezone.utc) - cachetime)
|
||||
if datetime.datetime.now(datetime.timezone.utc) - cachetime >= datetime.timedelta(days = 7):
|
||||
#delete old cache
|
||||
c.execute("DELETE FROM soulscreams WHERE name=?", (username,))
|
||||
conn.commit()
|
||||
conn.close()
|
||||
return None
|
||||
except TypeError:
|
||||
conn.close()
|
||||
return None
|
||||
|
||||
conn.close()
|
||||
return scream[2]
|
||||
|
||||
conn.close()
|
||||
return None
|
||||
|
||||
|
||||
|
||||
def cache_soulscream(username, soulscream):
|
||||
conn = create_connection()
|
||||
store_string = """ INSERT INTO soulscreams(name, soulscream, timestamp)
|
||||
VALUES (?,?, ?) """
|
||||
|
||||
if conn is not None:
|
||||
c = conn.cursor()
|
||||
c.execute(store_string, (username, soulscream, datetime.datetime.now(datetime.timezone.utc)))
|
||||
conn.commit()
|
||||
|
||||
|
||||
|
||||
conn.close()
|
||||
|
|
|
@ -10,8 +10,13 @@ name_stats_hook = "generateStats/"
|
|||
|
||||
def get_stats(username):
|
||||
#check database for cached name first
|
||||
scream = db.get_soulscream(username)
|
||||
if scream is not None:
|
||||
return scream
|
||||
|
||||
#yell at onomancer
|
||||
#yell at onomancer if not in cache or too old
|
||||
response = requests.get(onomancer_url + name_stats_hook + username)
|
||||
print("yelled at onomancer")
|
||||
if response.status_code == 200:
|
||||
return response.json()
|
||||
db.cache_soulscream(username, response.json()["soulscream"])
|
||||
return response.json()["soulscream"]
|
|
@ -44,6 +44,7 @@
|
|||
<ItemGroup>
|
||||
<Content Include="config.json" />
|
||||
<Content Include="ids" />
|
||||
<Content Include="matteo.db" />
|
||||
</ItemGroup>
|
||||
<Import Project="$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v$(VisualStudioVersion)\Python Tools\Microsoft.PythonTools.targets" />
|
||||
<!-- Uncomment the CoreCompile target to enable the Build command in
|
||||
|
|
|
@ -1,7 +1,5 @@
|
|||
import discord
|
||||
import json
|
||||
import discord, json, os
|
||||
import database as db
|
||||
import os
|
||||
import onomancer as ono
|
||||
|
||||
client = discord.Client()
|
||||
|
@ -27,6 +25,7 @@ def config():
|
|||
|
||||
@client.event
|
||||
async def on_ready():
|
||||
db.initialcheck()
|
||||
print(f"logged in as {client.user} with token {config()['token']}")
|
||||
|
||||
@client.event
|
||||
|
@ -40,10 +39,10 @@ async def on_message(msg):
|
|||
return
|
||||
|
||||
if msg.channel.id == config()["soulscream channel id"]:
|
||||
try:
|
||||
await msg.channel.send(ono.get_stats(msg.author.nick)["soulscream"])
|
||||
except TypeError:
|
||||
await msg.channel.send(ono.get_stats(msg.author.name)["soulscream"])
|
||||
#try:
|
||||
await msg.channel.send(ono.get_stats(msg.author.nick))
|
||||
#except TypeError:
|
||||
#await msg.channel.send(ono.get_stats(msg.author.name))
|
||||
|
||||
|
||||
|
||||
|
|
Loading…
Reference in New Issue
Block a user