add database calls + some bugfixes

This commit is contained in:
randomuser 2021-07-21 00:13:01 -05:00
parent 615d3850f2
commit 35e3df7b27
2 changed files with 22 additions and 4 deletions

2
db.py
View File

@ -13,7 +13,7 @@ class DuckDB:
str(reltime), str(reltime),
channel, channel,
) )
) ))
def parse(self, fd): def parse(self, fd):
lines = [i.rstrip() for i in fd.readlines()] lines = [i.rstrip() for i in fd.readlines()]

24
main.py
View File

@ -2,6 +2,9 @@ import asyncio
import random import random
import time import time
from db import DuckDB
from db import DuckEvent
from irctokens import build, Line from irctokens import build, Line
from ircrobots import Bot as BaseBot from ircrobots import Bot as BaseBot
from ircrobots import Server as BaseServer from ircrobots import Server as BaseServer
@ -19,33 +22,47 @@ class Server(BaseServer):
duckactive = False duckactive = False
duckactivetime = 0 duckactivetime = 0
lastduck = 0 lastduck = 0
db = "duckdb"
async def msg(self, chan, msg, usr=None): async def msg(self, chan, msg, usr=None):
if usr != None: if usr != None:
await self.send(build("PRIVMSG", [chan, usr + ": " + msg])) await self.send(build("PRIVMSG", [chan, usr + ": " + msg]))
else: await self.send(build("PRIVMSG", [chan, msg])) else: await self.send(build("PRIVMSG", [chan, msg]))
async def msgall(self, msg): async def msgall(self, msg):
[await self.msg(channel, msg) for channel in self.channels] [await self.msg(channel, msg) for channel in self.channels]
async def new_duck(self): async def new_duck(self):
self.messages = 0 self.messages = 0
self.duckactive = True self.duckactive = True
self.duckactivetime = time.time() self.duckactivetime = time.time()
await self.msgall(lang["duck"]) await self.msgall(lang["duck"])
async def duck_test(self): async def duck_test(self):
if self.messages > 1 and random.randint(0, 99) < 10: await self.new_duck() if self.messages > 1 and random.randint(0, 99) < 10: await self.new_duck()
async def misstime(self): async def misstime(self):
return format(time.time() - self.lastduck, '.2f') return format(time.time() - self.lastduck, '.2f')
async def coughttime(self): async def coughttime(self):
return format(self.lastduck - self.duckactivetime, '.2f') return format(self.lastduck - self.duckactivetime, '.2f')
async def duck_action(self, user, chan): async def duck_action(self, user, chan):
db = DuckDB(self.db)
if self.duckactive: if self.duckactive:
self.duckactive = False self.duckactive = False
self.messages = 0 self.messages = 0
self.lastduck = time.time() self.lastduck = time.time()
await self.msgall(lang["duckcought"].format(user, chan, self.coughttime()))) await self.msgall(lang["duckcought"].format(user, chan, await self.coughttime()))
db.add("B", user, time.time(), float(await self.coughttime()), chan)
elif self.lastduck != 0: elif self.lastduck != 0:
await self.msg(chan, lang["noduck"].format(self.coughttime())), user) await self.msg(chan, lang["noduck"].format(await self.misstime()), user)
db.add("M", user, time.time(), float(await self.misstime()), chan)
else: else:
await self.msg(chan, lang["noduckstart"], user) await self.msg(chan, lang["noduckstart"], user)
db.add("M", user, time.time(), -1, chan)
db.write(self.db)
async def line_read(self, line: Line): async def line_read(self, line: Line):
print(f"{self.name} < {line.format()}") print(f"{self.name} < {line.format()}")
if line.command == "001": if line.command == "001":
@ -62,9 +79,10 @@ class Server(BaseServer):
return return
self.messages += 1 self.messages += 1
self.duck_test() await self.duck_test()
elif line.command == "INVITE": elif line.command == "INVITE":
await self.send(build("JOIN", [line.params[1]])) await self.send(build("JOIN", [line.params[1]]))
async def line_send(self, line: Line): async def line_send(self, line: Line):
print(f"{self.name} > {line.format()}") print(f"{self.name} > {line.format()}")