diff --git a/main.py b/main.py index 13818b4..dacd966 100755 --- a/main.py +++ b/main.py @@ -1,15 +1,11 @@ +import telebot # Telegram bot module +from re import match, compile # ANALYS WORD +from db import read_db, write_db # database functions +database = read_db() +bot = telebot.TeleBot(database['token']) -import telebot -import os -import json -from telebot import types, util -#############TOKEN INIT##### -from db import * -db = read_db() -bot = telebot.TeleBot(db['token']) -########## ALANYS WORD ##### -from re import search, match, sub, compile -def is_bad(word, bad, excepts): + +def is_bad(word, bad, excepts): # check bad words # Replace spec.symbols # Excepts if word in excepts: @@ -22,29 +18,22 @@ def is_bad(word, bad, excepts): else: return False -### TRANSLIT an OTHER ###### -def rep(word): - rep = [['e', 'е'], ['a', 'а'], ['i', 'и'], ['t', 'т'], ['y', 'у'], ['u', 'у'], ['o', 'о'], ['d', 'д'], ['x', 'х'], - ['t', 'т'], ['p', 'п'], ['r', 'р'], ['h', 'х'], ['b', 'б'], ['n', 'н'], - ['🇽', 'х'], ['🇾', 'у'], ['🇹', 'т'], ['🇪', 'е'], ['❌', 'х'], ['✖', 'х'], ['❎', 'х']] - for i in rep: - word = word.replace(i[0], i[1]) + +def rep(word): # TRANSLIT an OTHER + symbols = [['e', 'е'], ['a', 'а'], ['i', 'и'], ['t', 'т'], ['y', 'у'], ['u', 'у'], ['o', 'о'], ['d', 'д'], ['x', 'х'], + ['t', 'т'], ['p', 'п'], ['r', 'р'], ['h', 'х'], ['b', 'б'], ['n', 'н'], + ['🇽', 'х'], ['🇾', 'у'], ['🇹', 'т'], ['🇪', 'е'], ['❌', 'х'], ['✖', 'х'], ['❎', 'х']] + for symbol in symbols: + word = word.replace(symbol[0], symbol[1]) return word -####### SEND MESSAGE ####### -def send_message(user_id ,message): - bot.send_message(user_id, - message, - parse_mode='HTML') -####### CATCH BAD WORDS #### -def catch(message): +def catch(message): # CATCH BAD WORDS bad_list = ['ху.+й', 'х.+уй', 'xуи', 'xyи', 'хyи', 'xyй', 'xуй', 'ху.', '.+хуе', '.+хуё', 'xyu', 'xui', 'хyй', - 'поху', '.уй', 'ах.ен' , 'а.уе', '.+хуй', '.+хуй', 'хуя', '.+хуя', - 'бл.+ть', 'бля', 'бл.+ть', - '.+бл+.дь+', '.+бл.+дь', - 'трах', 'еб.+ть', 'ебу', 'ебал', '..ебен', 'ёбан', 'ебть', 'eby', '..ебись', 'уеб', 'уёб', 'ебей', 'ебу', 'ебл', 'еба', - '.+ебн.+т.+', '.+еб.ть', 'ебо', '.+ебо', '.+еба', '.+ёбы', 'еби.+', 'ёба.+', 'ебля', 'ебё.+', 'заеб', 'заеб.+', 'заёб', + 'поху', '.уй', 'ах.ен', 'а.уе', '.+хуй', '.+хуй', 'хуя', '.+хуя', + 'бл.+ть', 'бля', 'бл.+ть', '.+бл+.дь+', '.+бл.+дь', + 'трах', 'еб.+ть', 'ебу', 'ебал', '..ебен', 'ёбан', 'ебть', 'eby', '..ебись', 'уеб', 'уёб', 'ебей', 'ебу', 'ебл', 'еба', + '.+ебн.+т.+', '.+еб.ть', 'ебо', '.+ебо', '.+еба', '.+ёбы', 'еби.+', 'ёба.+', 'ебля', 'ебё.+', 'заеб', 'заеб.+', 'заёб', '.+заеб', '.+заёб', 'заеб.+', 'заёб.+', 'ёбск', '.+ебуч.+', 'еб.+утые', 'е.+б.+утые', 'ебан', 'еб.+н', 'ебн', 'ёбн', '.+ёбка', '.+ебка', 'пр..ба', '.б.л', 'у.б', '.блан', @@ -65,7 +54,7 @@ def catch(message): if bad_found: break for bad in bad_list: - if is_bad(check.lower(), bad, excepts) == True: + if is_bad(check.lower(), bad, excepts): bad_found = True break if not bad_found: @@ -76,57 +65,71 @@ def catch(message): if bad_found: break for bad in bad_list: - if is_bad(check.lower(), bad, excepts) == True: + if is_bad(check.lower(), bad, excepts): bad_found = True break if bad_found: - db = read_db() + database = read_db() chat_id = str(message.chat.id) user_id = str(message.from_user.id) - username = str(message.from_user.username) - if chat_id not in db: - db[chat_id] = {} - if user_id not in db[chat_id]: - db[chat_id][user_id] = {} - db[chat_id][user_id]["lunch"] = 0 - if username not in db[chat_id][user_id]: - db[chat_id][user_id]["username"] = username - if user_id in db[chat_id]: - db[chat_id][user_id]["lunch"] += 1 - #bot.delete_message(message.chat.id, message.id) -# bot.send_message(message.chat.id, - # f'Пользователь [{telebot.util.user_link(message.from_user)}] использовал непечатное выражение.\n'\ - # f'Кол-во потерянных обедов пользователя: {db[chat_id][user_id]}', - # parse_mode='HTML') - write_db(db) - -@bot.message_handler(commands=['stats']) + if chat_id not in database: + database[chat_id] = {} + if user_id not in database[chat_id]: + database[chat_id][user_id] = {} + database[chat_id][user_id]["lunch"] = 0 + if user_id in database[chat_id]: + database[chat_id][user_id]["lunch"] += 1 + bot.send_message(message.chat.id, + f'Пользователь использовал непечатное выражение.\n' + f'Кол-во потерянных обедов: {database[chat_id][user_id]["lunch"]}', + parse_mode='HTML') + write_db(database) + + +@bot.message_handler(commands=['stats']) # stats def send_stats(message): - db = read_db() + database = read_db() chat_id = str(message.chat.id) user_id = str(message.from_user.id) - #if str(message.from_user.id)==db[str(message.chat.id)]: - bot.send_message(chat_id, f"Количество потраченных обедов [{telebot.util.user_link(message.from_user)}]: {db[chat_id][user_id]['lunch']}{'😿' if db[chat_id][user_id]['lunch'] > 0 else '😻'}", parse_mode='HTML') + if user_id not in database[chat_id]: + database[chat_id] = {} + database[chat_id][user_id] = {} + database[chat_id][user_id]["lunch"] = 0 + else: + lunch_count = database[chat_id][user_id]["lunch"] + if lunch_count > 0: + if lunch_count == 1: obed = "обеда" + else: obed = "обедов" + bot.send_message(chat_id, f'Вы убили {database[chat_id][user_id]["lunch"]} {obed}! Ужас...', parse_mode='HTML') + else: + bot.send_message(chat_id, f'Вы не убили ни одного обеда сегодня, поздравляю!', parse_mode='HTML') + @bot.message_handler() def catch_all_messages(message): catch(message) + @bot.edited_message_handler() def catch_edited_messages(message): catch(message) -mod = 1 -if mod == 1: - while True: - try: - bot.polling() - except KeyboardInterrupt: - exit() - except: - pass -elif mod == 2: - bot.polling() -else: - exit() +def main(): + mod = 1 + if mod == 1: + while True: + try: + bot.polling() + except KeyboardInterrupt: + exit() + except: + pass + elif mod == 2: + bot.polling() + else: + exit() + + +if __name__ == "__main__": + main() diff --git a/requirements.txt b/requirements.txt new file mode 100644 index 0000000..2d77c10 --- /dev/null +++ b/requirements.txt @@ -0,0 +1,2 @@ +schedule==1.2.1 +telebot==0.0.5 diff --git a/send_message.py b/send_message.py index 092c3a2..5e260c6 100644 --- a/send_message.py +++ b/send_message.py @@ -1,25 +1,38 @@ import schedule -import time +from time import sleep import telebot -from db import * -db = read_db() -bot = telebot.TeleBot(db['token']) +from db import read_db, write_db +token = read_db()["token"] +bot = telebot.TeleBot(token) def send_message(): - db = read_db() - for i in db: - if i != "token": - text = 'Статистика обедов за 24 часа:\n' - for j in db[i]: - text += f'@{db[i][j]["username"]} - {db[i][j]["lunch"]} 😿\n' - db[i][j]["lunch"] = 0 - write_db(db) - bot.send_message(int(i), text, parse_mode='HTML') + database = read_db() + for chat_id in database: + text = 'Статистика обедов за 24 часа:\n' + if chat_id != "token": + for user_id in database[chat_id]: + lunch = database[chat_id][user_id]["lunch"] + if lunch > 0: + if lunch == 1: obed = "обеда" + else: obed = "обедов" + text += f'Пользователь убил {lunch} {obed}😿\n' + database[chat_id][user_id]["lunch"] = 0 + else: + text += f'Пользователь молодец!\n' + write_db(database) + bot.send_message(int(chat_id), text, parse_mode='HTML') -schedule.every().day.at("21:00","Europe/Moscow").do(send_message) -while True: - try: - schedule.run_pending() - time.sleep(1) - except: ... + +def main(): + schedule.every().day.at('21:00', 'Europe/Moscow').do(send_message) + while True: + try: + schedule.run_pending() + sleep(1) + except: + pass + + +if __name__ == "__main__": + main()