# Chrono Telegram Bot # It keeps track of the time people write messages # Created by KuchiKuu # 2022-05-25 # Modified: 2020-05-28 import time import telebot import json import sqlite3 from matplotlib import pyplot as plt plot_hours = [0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23] config = {} TOKEN="" OWNER_ID=-1 with open("chronochanbot_config") as f: config = json.load(f) TOKEN=config["TOKEN"] OWNER_ID=config["OWNER_ID"] def debug_message(text): print(text) #exit() bot = telebot.TeleBot(TOKEN,parse_mode=None) @bot.message_handler(func=lambda m:True) def say_something(message): received_user_id = message.from_user.id time_of_message = time.strftime('%H',time.localtime(message.date)) print(f'{received_user_id} @ {time_of_message}') database = sqlite3.connect("chrono.db") record = database.execute(f'select * from timetable where user_id = {received_user_id};').fetchall() if(record): database.execute(f'update timetable set hour_{time_of_message} = hour_{time_of_message} + 1 where user_id = {received_user_id};') # print(database.execute(f'select * from timetable;').fetchone()[0]) database.commit() else: print("No such user in database") database.execute(f'insert into timetable (user_id) values({received_user_id});') database.commit() record = database.execute(f'select * from timetable where user_id = {received_user_id};').fetchall() if(database): database.execute(f'update timetable set hour_{time_of_message} = hour_{time_of_message} + 1 where user_id = {received_user_id};') database.commit() else: print("fuck") if(message.text in ["/plot","/plot@ChronoChan_bot"]): plot_values = []; #received_user_id = 1243703097; result = database.execute(f'select * from timetable where user_id = {received_user_id};') result = result.fetchone() #while(result[0] != received_user_id): # result = result.fetchone() #plot_values = [result[1],result[2],result[3],result[4],result[5],result[6],result[7],result[8],result[9],result[10],result[11],result[12],result[13],result[14],result[15],result[16],result[17],result[18],result[19],result[20],result[21],result[22],result[23],result[24]] plot_values = result[1:25] print("Result from database: "+str(result)) #print(str(result[24])) print("Data for plotting: "+str(plot_values)) plt.clf() plt.cla() plt.bar(plot_hours,plot_values) plt.xticks(plot_hours) plt.yticks(plot_values) plt.xlabel("Hour of the day") plt.rcParams['font.family'] = 'monospace' plt.ylabel("Number of messages") plt.title(f'{message.from_user.first_name}\'s activity chart') plt.savefig("plot.png") time.sleep(2) plot_photo = open("plot.png","rb") bot.send_photo(message.chat.id,plot_photo) plot_photo.close() database.close() #f'update timetable set hour_{time_of_message} = hour_{time_of_message} + 1 where user_id = {received_user_id};' #update a set hour_0 = hour_0 + 1 where ID = 0; #bot.reply_to(message,str(message)) # if(message.reply_to_message): # if(message.reply_to_message.text): # if(message.text): ## print("OK") ## print("Got a message: "+message.text); ## print("Replied to: "+str(message.reply_to_message.text)) ## bot.reply_to(message.reply_to_message,"LOL") # if(message.text[:2] == "s/"): # # print("Regex") # regex_properties = get_fucking_regex_faggot(message.text[2:]) # try: # bot.reply_to(message.reply_to_message,re.sub(regex_properties[0],regex_properties[1],message.reply_to_message.text)) # except re.error: # bot.reply_to(message,"Learn regex bro") @bot.my_chat_member_handler() def membership(ChatMemberUpdated): if(ChatMemberUpdated.new_chat_member.user.id == bot.get_me().id): if(ChatMemberUpdated.new_chat_member.status == "member"): debug_message("I have joined a chat") bot.send_message(ChatMemberUpdated.chat.id,"Glory to the Palestine! DEATH TO ISRAEL!!") elif(ChatMemberUpdated.new_chat_member.status == "left"): debug_message("I have been removed from a chat.") bot.infinity_polling()