def cooldown(message, command, timeout=3600, notify=True, individual=True): """Checks if the function is ready to be used again""" if message.chat.id > 0: # Command is used in PM's return True database = Database() person_id = 0 if individual: person_id = message.from_user.id entry = database.get('cooldown', ('person_id', person_id), ('command', command), ('chat_id', message.chat.id)) if not entry: # Person uses this command for the first time database.append((person_id, command, message.chat.id, message.date), 'cooldown') return True # The command is already used time_passed = message.date - entry['time'] if time_passed < timeout: # Кулдаун не прошёл seconds = timeout - time_passed minutes = seconds // 60 seconds %= 60 if notify: if individual: answer = "Воу, придержи коней, ковбой. Ты сможешь воспользоваться этой командой только " answer += f"через {minutes} минут и {seconds} секунд 🤠" else: answer = "Воу, придержите коней, ковбои. Вы сможете воспользоваться этой командой только " answer += f"через {minutes} минут и {seconds} секунд 🤠" reply(message, answer) return False # Кулдаун прошёл database.change(message.date, 'time', 'cooldown', ('person_id', person_id), ('command', command), ('chat_id', message.chat.id)) return True
def cooldown(message, command, timeout=3600): """Checks if the function is ready to be used again""" if message.chat.id > 0: # Command is used in PM's return True database = Database() # Получаем наименование необходимой команды entry = database.get('cooldown', ('person_id', message.from_user.id), ('command', command), ('chat_id', message.chat.id)) if not entry: # Чел впервые пользуется коммандой database.append( (message.from_user.id, command, message.chat.id, message.date), 'cooldown') return True # Чел уже пользовался командой time_passed = message.date - entry['time'] if time_passed < timeout: # Кулдаун не прошёл seconds = timeout - time_passed minutes = seconds // 60 seconds %= 60 answer = "Воу, придержи коней, ковбой. Ты сможешь воспользоваться этой командой только " answer += f"через {minutes} минут и {seconds} секунд 🤠" reply(message, answer) return False # Кулдаун прошёл database.change(message.date, 'time', 'cooldown', ('person_id', message.from_user.id), ('command', command), ('chat_id', message.chat.id)) return True
def language_setter(message): """Sets the language of the chat""" database = Database() original_languages = ['Русский', 'English'] english_languages = ['Russian', 'English'] language = message.text[6:].title() if language in original_languages + english_languages: if language in original_languages: language = (language, ORIGINAL_TO_ENGLISH[language]) else: # language in english_languages language = (ENGLISH_TO_ORIGINAL[language], language) if database.get('languages', ('id', message.chat.id)): database.change(language[1], 'language', 'languages', ('id', message.chat.id)) else: database.append((message.chat.id, language[1]), 'languages') if language[0] == language[1]: reply(message, f"✅ {language[0]} ✅") else: reply(message, f"✅ {language[0]} | {language[1]} ✅") else: answer = '' answer += "Если вы говорите на русском, напишите '/lang Русский'\n\n" answer += "If you speak English, type '/lang English'\n\n" reply(message, answer)
def counter(message, person): """Подсчитывает сообщения, отправленные челом""" database = Database() if not database.get('messages', ('person_id', person.id), ('chat_id', message.chat.id)): database.append((person.id, message.chat.id, 0), 'messages') messages = database.get('messages', ('person_id', person.id), ('chat_id', message.chat.id))['messages'] database.change(messages + 1, 'messages', 'messages', ('person_id', person.id), ('chat_id', message.chat.id))
def rank_changer(message, person): """Changes person's rank""" database = Database() chat = database.get('chats', ('id', message.chat.id)) system = chat['system'] chat_configs = get_system_configs(system) command = message.text.split()[0].split(sep='@')[0] adm_place = admin_place(message, database) if command in chat_configs["ranks_commands"]: rank_index = chat_configs["ranks_commands"].index(command) rank = chat_configs["ranks"][rank_index] database.change(rank, "rank", 'members', ('id', person.id), ('system', system)) reply(message, f"Теперь это {rank} по званию!") if adm_place: send(adm_place, "Пользователь {} получил(а) звание {}".format( person_info_in_html(person), rank), parse_mode='HTML') elif command in chat_configs["appointment_adders"]: appointment_index = chat_configs["appointment_adders"].index(command) appointment = chat_configs["appointments"][appointment_index] if not database.get('appointments', ('id', person.id), ('system', system), ('appointment', appointment)): database.append((person.id, system, appointment), "appointments") reply( message, f"Теперь это {appointment}. Поздравим человека с повышением!") if adm_place: send(adm_place, "Пользователь {} получил(а) должность {}".format( person_info_in_html(person), appointment), parse_mode='HTML') else: reply(message, "У этого человека и так есть эта должность") elif command in chat_configs["appointment_removers"]: appointment_index = chat_configs["appointment_removers"].index(command) appointment = chat_configs["appointments"][appointment_index] database.remove("appointments", ('id', person.id), ('system', system), ('appointment', appointment)) reply(message, f"Теперь это не {appointment}") if adm_place: send(adm_place, "Пользователь {} потерял(а) должность {}".format( person_info_in_html(person), appointment), parse_mode='HTML') unban_user(person) if is_suitable(message, person, 'boss', loud=False): give_admin(message, person, loud=False) else: del_admin(message, person, loud=False)
def message_change(message, person, parameters_dictionary): """Меняет запись в БД о количестве сообщений чела""" LOG.log(f"message_change invoked to person {person.id}") database = Database() p_id = person.id ch_id = message.chat.id value = parameters_dictionary['value'] reply( message, "Ставлю этому человеку в этот чат количество сообщений {}".format( value)) if not database.get('messages', ('person_id', p_id), ('chat_id', ch_id)): database.append((p_id, ch_id, value), 'messages') else: database.change(value, 'messages', 'messages', ('person_id', p_id), ('chat_id', ch_id))