-
-
Notifications
You must be signed in to change notification settings - Fork 4
Expand file tree
/
Copy pathdatabases.py
More file actions
114 lines (84 loc) · 2.45 KB
/
databases.py
File metadata and controls
114 lines (84 loc) · 2.45 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
import datetime
from peewee import BigIntegerField, CharField, DateTimeField, IntegerField, Model, SqliteDatabase
main_db = SqliteDatabase("./databases/main.db")
class User(Model):
"""
User model to access the database.
"""
userid = BigIntegerField()
chatid = BigIntegerField()
optout = IntegerField(default=0)
userfirstname = CharField(null=True)
karma = IntegerField(default=0)
num_messages = IntegerField(default=0)
level = IntegerField(default=0)
class Meta:
"""
Basically which database.
"""
database = main_db
class GDPR(Model):
"""
Opt-out.
"""
userid = BigIntegerField()
class Meta:
"""
Basically which database.
"""
database = main_db
class ChatCommand(Model):
"""
Chat command model to access the database.
"""
chatid = BigIntegerField()
commandname = CharField()
enabled = IntegerField(default=1)
lastusage = DateTimeField(default=datetime.datetime.now())
class Meta:
"""
Basically which database.
"""
database = main_db
class ChatJob(Model):
"""
Chat command model to access the database.
"""
chatid = BigIntegerField()
messageid = BigIntegerField()
fun = CharField()
deadline = DateTimeField()
class Meta:
"""
Basically which database.
"""
database = main_db
def start_jobs_in_database(dispatcher, fun):
for job in ChatJob.select().where(ChatJob.fun == fun.__name__):
delta = (job.deadline - datetime.datetime.now()) + datetime.timedelta(seconds=1)
if delta.total_seconds() < 1:
job.delete_instance()
else:
dispatcher.job_queue.run_once(
fun,
delta.total_seconds(),
context={"chat_id": job.chatid, "message_id": job.messageid},
name="{}_{}".format(job.chatid, job.messageid),
)
# class ChatModule(Model):
# """
# Chat command model to access the database.
# """
#
# chatid = BigIntegerField()
# modulename = CharField()
# enabled = IntegerField(default=1)
#
# class Meta:
# """
# Basically which database.
# """
#
# database = main_db
main_db.connect()
main_db.create_tables([User, GDPR, ChatCommand, ChatJob])