Completed
Push — master ( 001739...de283d )
by Anas
28s
created

delete_old()   A

Complexity

Conditions 3

Size

Total Lines 9

Duplication

Lines 0
Ratio 0 %

Importance

Changes 1
Bugs 0 Features 0
Metric Value
cc 3
c 1
b 0
f 0
dl 0
loc 9
rs 9.6666
1
#!/usr/bin/python
2
# -*- coding: utf-8 -*-
3
from telegram.ext import MessageHandler, Filters
4
from datetime import datetime, timedelta
5
import sqlite3
6
7
8
def module_init(gd):
9
    global c, conn
10
    path = gd.config["path"]
11
    commands = gd.config["commands"]
0 ignored issues
show
Unused Code introduced by
The variable commands seems to be unused.
Loading history...
12
    conn  = sqlite3.connect(path+"rikka.db", check_same_thread=False) 
13
    c = conn.cursor()
14
    #c.execute("DROP TABLE IF EXISTS chats")
15
    gd.dp.add_handler(MessageHandler(Filters.all, get_chats), group=1)
16
17
18
def create_table(name, columns):
19
    c.execute("CREATE TABLE IF NOT EXISTS "+name+"("+columns+")")
20
21
22
def data_entry(table, entry_columns, values):
23
    columns = str(values).strip('[]')
0 ignored issues
show
Unused Code introduced by
The variable columns seems to be unused.
Loading history...
24
    values_count = ("?, "*len(values))[:-2]
25
    c.execute("INSERT INTO "+table+" ("+entry_columns+") VALUES ("+values_count+")", (values))
26
    conn.commit()
27
28
29
def check_entry(chat_id, table):
30
    c.execute("SELECT chat_id FROM "+table)
31
    for row in c.fetchall():
32
        if chat_id in row:
33
            return True
34
        else:
35
            return False
36
37
38
def delete_old(table, date):
39
    span = timedelta(days=7)
40
    c.execute("SELECT chat_id FROM "+table)
41
    for row in c.fetchall():
42
        c.execute("SELECT date FROM "+table+" WHERE chat_id = %s" %(row))
43
        old_date = c.fetchone()[0]
44
        old_date_time = datetime.strptime(old_date, "%d.%m.%Y %H:%M:%S")
45
        if date - old_date_time > span:
46
            c.execute("DELETE FROM "+table+" WHERE chat_id = %s" %(row))
47
48
49
def get_chats(bot, update):
50
    current_time = datetime.strftime(datetime.now(), "%d.%m.%Y %H:%M:%S")
51
    current_time_obj = datetime.strptime(current_time, "%d.%m.%Y %H:%M:%S")
52
    table_name = "chats"
53
    creation_columns = "date TEXT, chat_id INTEGER, chat_type TEXT, chat_title TEXT, chat_username TEXT, chat_desc TEXT, chat_members INTEGER, owner TEXT"
54
    entry_columns = "date, chat_id, chat_type, chat_title, chat_username, chat_desc, chat_members, owner" 
55
    create_table(table_name, creation_columns)
56
    delete_old(table_name, current_time_obj)
57
58
    chat_id = update.effective_message.chat_id
59
    if check_entry(chat_id, table_name):
60
        return
61
    chat = bot.getChat(chat_id)
62
    chat_type = chat.type
63
    chat_title = chat.title
64
    chat_username = chat.username
65
    chat_desc = chat.description
66
    chat_members = chat.get_members_count()
67
    if chat_type == "private":
68
        owner = update.effective_message.from_user.name
69
        if owner.startswith("@"):
70
            owner = owner[1:]
71
    else:
72
        admins = chat.get_administrators(CREATOR = "creator")
73
        for admin in admins:
74
            if admin.status == "creator":
75
                owner = admin.user.username
76
    values = [current_time, chat_id, chat_type, chat_title, chat_username, chat_desc, chat_members, owner]
77
    data_entry(table_name, entry_columns, values)
78
79
80
def log_command(update, date, command):
81
    table_name = "commands"
82
    creation_columns = "date TEXT, user TEXT, command TEXT, chat_id INTEGER, chat_title TEXT"
83
    entry_columns = "date, user, command, chat_id, chat_title" 
84
    create_table(table_name, creation_columns)
85
    if update.callback_query is not None:
86
        user = update.callback_query.message.chat.username
87
    else:
88
        user = update.effective_message.from_user.name[1:]
89
    chat_id = update.effective_message.chat_id
90
    chat_title = update.effective_message.chat.title
91
92
    values = [date, user, command, chat_id, chat_title]
93
    data_entry(table_name, entry_columns, values)
94