def send_short_top(message, language, format_string, start='', sort_key=lambda x: True): """Send a short version of a top for non-admins""" database = Database() # Declaring variables system = database.get('chats', ('id', message.chat.id))['system'] formating_dict = {'m_emo': get_system_configs(system)['money_emoji'], 'bot_money': database.get('systems', ('id', system))['money']} text = start.format(**formating_dict) members = database.get_many('members', ('system', system)) members = list(filter(lambda x: sort_key(x) != 0, members)) members.sort(key=sort_key, reverse=True) person_index = 0 for person_index in range(1, len(members) + 1): if members[person_index - 1]['id'] == message.from_user.id: break # Main loop for index in range(1, len(members) + 1): member = members[index - 1] p_link = link_text_wrapper(html_cleaner(member["nickname"]), f't.me/{member["username"]}') formating_dict.update(member) formating_dict.update({'index': index, 'p_link': p_link, 'day': member['day_birthday']}) if '{month}' in format_string: formating_dict['month'] = MONTHS_GENITIVE[member['month_birthday'] - 1][language] if index <= 5 or abs(index - person_index) <= 2: text += format_string.format(**formating_dict) elif '.\n.\n.\n' not in text and person_index >= 9: text += '.\n.\n.\n' if text: send(message.chat.id, text, parse_mode='HTML') else: reply(message, "Ничего нет!")
def unwarn(message, person, parameters_dictionary: dict): """Снимает с участника предупреждение""" database = Database() unwarns = parameters_dictionary['value'] chat = database.get('chats', ('id', message.chat.id)) system = chat['system'] value = database.get('members', ('id', person.id), ('system', system))['warns'] - unwarns if value >= 0: database.change(value, 'warns', 'members', ('id', person.id), ('system', system)) adm_place = admin_place(message, database) if adm_place: text = "#warns\n\n" text += "Пользователь {} потерял(а) {} варн(а) и их стало {}\n".format( person_info_in_html(person), unwarns, value) text += "Варн(ы) снят(ы) пользователем {}\n".format( person_info_in_html(message.from_user)) if 'comment' in parameters_dictionary.keys(): text += "Комментарий: {}".format( parameters_dictionary['comment']) send(adm_place, text, parse_mode='HTML') reply(message, "Варн(ы) снят(ы). Теперь их {}".format(value)) if 3 - unwarns <= value < 3: chat_configs = get_system_configs(system) unban_user(person) database.change(chat_configs['ranks'][1], 'rank', 'members', ('id', person.id), ('system', system)) else: reply(message, "Нельзя сделать отрицательное количество предупреждений")
def send_me(message, person): """Присылает человеку его запись в БД""" LOG.log(str(message.from_user.id) + ": send_me invoked") database = Database() system = database.get('chats', ('id', message.chat.id))['system'] chat_config = get_system_configs(system) money_name = chat_config['money_name'] money_name_word = get_word_object(money_name, 'ru') member_update(system, person) # Update person's messages, nickname and username person_entry = get_person(message, person, system, database, system_configs=chat_config) appointments = [x['appointment'] for x in database.get_many('appointments', ('id', person.id), ('system', system))] messages_here = 0 if database.get('messages', ('person_id', person.id), ('chat_id', message.chat.id)): messages_here = database.get('messages', ('person_id', person.id), ('chat_id', message.chat.id))['messages'] msg = 'ID: {}\n'.format(person_entry['id']) msg += 'Юзернейм: {}\n'.format(person_entry['username']) msg += 'Никнейм: {}\n'.format(person_entry['nickname']) msg += 'Ранг: {}\n'.format(person_entry['rank']) msg += 'Кол-во сообщений в этом чате: {}\n'.format(messages_here) if person_entry['messages']: msg += 'Кол-во сообщений во всей системе: {}\n'.format(person_entry['messages']) msg += 'Кол-во предупреждений: {}\n'.format(person_entry['warns']) if chat_config['money']: msg += 'Кол-во {}: {}\n'.format(money_name_word.genitive_plural(), person_entry['money']) if appointments: msg += 'Должности: ' + ', '.join(appointments) reply(message, msg)
def admins(message): """@-mention all admins""" database = Database() chat = database.get('chats', ('id', message.chat.id)) system = chat['system'] chat_config = get_system_configs(system) boss = chat_config['commands']['boss'] ranks = chat_config['ranks'] admins_username = [] if isinstance(boss, list): all_ranks = ranks[ranks.index(boss[0]):ranks.index(boss[1]) + 1] for rank in all_ranks: admins_username += [ '@' + x['username'] for x in database.get_many('members', ('rank', rank), ('system', system)) ] elif isinstance(boss, str): admins_id = [ admin['id'] for admin in database.get_many('appointments', ('appointment', boss)) ] admins_username = [ '@' + database.get('members', ('id', admin), ('system', system))['username'] for admin in admins_id ] reply(message, 'Вызываю сюда админов: ' + ', '.join(admins_username))
def warn(message, person, parameters_dictionary): """Даёт участнику предупреждение""" database = Database() warns = parameters_dictionary['value'] chat = database.get('chats', ('id', message.chat.id)) system = chat['system'] value = database.get('members', ('id', person.id), ('system', system))['warns'] + warns database.change(value, 'warns', 'members', ('id', person.id), ('system', system)) reply(message, "Варн(ы) выдан(ы). Теперь их {}".format(value)) adm_place = admin_place(message, database) if adm_place: send(adm_place, "Пользователь {} получил(а) {} варн(а) и их стало {}".format( person_info_in_html(person), warns, value), parse_mode='HTML') blowout = database.get('channels', ('name', 'Проколы'))['id'] how_many = 10 # Сколько пересылает сообщений end_forwarding = message.reply_to_message.message_id start_forwarding = end_forwarding - how_many send(blowout, "В чате {} случилось нарушение участником {} Прысылаю {} сообщений". format(chat_info_in_html(message.chat), person_info_in_html(person), how_many), parse_mode='HTML') for msg_id in range(start_forwarding, end_forwarding + 1): forward(blowout, message.chat.id, msg_id) if value >= 3: ban(message, person)
def feature_is_available(chat_id, system, command_type): """Checks if some feature is available in this system""" database = Database() command_mode = database.get('chats', ('id', chat_id))[command_type] if command_mode == 1: return True elif command_mode == 2: return database.get('systems', ('id', system), (command_type, 2)) return False
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 money_reset(message): """Take all users' money to a system fund""" database = Database() system = database.get('chats', ('id', message.chat.id))['system'] system_money = database.get('systems', ('id', system))['money'] members = database.get_many('members', ('system', system)) # Get the amount of money of chat members members_money = sum([member['money'] for member in members]) if system_money != 'inf': database.increase(members_money, 'money', 'systems', ('id', system)) database.change(0, 'money', 'members', ('system', system)) reply(message, "OK")
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 get_person(message, person, system: str, database: Database, system_configs=None) -> dict: """Get entry about some person in some system, create if there wasn't""" person_entry = database.get('members', ('id', person.id), ('system', system)) if not person_entry: if not system_configs: system_configs = get_system_configs(system) add_person(message, person, system, database, system_configs) person_entry = database.get('members', ('id', person.id), ('system', system)) return person_entry
def send_some_top(message, language, format_string, start='', sort_key=lambda x: True): """Send a full version of a top for admins""" database = Database() # Declaring variables sent = False system = database.get('chats', ('id', message.chat.id))['system'] formating_dict = { 'm_emo': get_system_configs(system)['money_emoji'], 'bot_money': database.get('systems', ('id', system))['money'] } text = start.format(**formating_dict) members = database.get_many('members', ('system', system)) members = list(filter(lambda x: sort_key(x) != 0, members)) members.sort(key=sort_key, reverse=True) if len(members) > 50: target_chat = message.from_user.id else: target_chat = message.chat.id # Main loop for index in range(1, len(members) + 1): member = members[index - 1] p_link = link_text_wrapper(html_cleaner(member["nickname"]), f't.me/{member["username"]}') formating_dict.update(member) formating_dict.update({ 'index': index, 'p_link': p_link, 'day': member['day_birthday'] }) if '{month}' in format_string: formating_dict['month'] = MONTHS_GENITIVE[member['month_birthday'] - 1][language] text += format_string.format(**formating_dict) if index % 50 == 0: sent = send(target_chat, text, parse_mode='HTML') text = '' sent = send(target_chat, text, parse_mode='HTML') or sent if len(members) > 50: if sent: reply(message, "Выслал инфу в личку") else: reply(message, "Сначала запусти меня в личных сообщениях") elif not sent: reply(message, "Ничего нет!")
def anon_message(message): """Send an anonymous message to an admin place""" database = Database(to_log=False) systems = [x['system'] for x in database.get_many('members', ('id', message.from_user.id))] system = None system_specification_length = 0 if len(systems) == 1: system = systems[0] elif message.text.split()[1].isdecimal(): system = message.text.split()[1] system_specification_length += len(system) + 1 else: data = get_systems_json() text = "Вижу вы сидите в нескольких чатах. " \ "Чтобы уточнить, в какой админосостав отправлять сообщение, " \ "оформите вашу команду так:\n\n/anon <номер системы> <ваше послание>.\n\n " \ "Вот список систем:\n" names = [f"{sys} — {data[sys]['name']}" for sys in systems] reply(message, text + '\n'.join(names)) if system: system_entry = database.get('systems', ('id', system)) if system_entry: if system_entry['admin_place']: anon_message_text = ' '.join(message.text.split()[1:]) sent = send(system_entry['admin_place'], "#anon\n\n" + anon_message_text[system_specification_length:]) if sent: reply(message, "Сообщение успешно отправлено. Спасибо за ваше мнение!") else: reply(message, "Произошла ошибка!") else: reply(message, "У этой системы админосостав не отмечен") else: reply(message, "Этой системы не существует!")
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 get_languages(message): """Gets all languages that are possibly spoken by user :param message: message :return dictionary {"Russian": bool, "English": bool} :rtype dict""" database = Database() entry = database.get('languages', ('id', message.chat.id)) languages = {"Russian": False, "English": False} if entry: languages[entry['language']] = True return languages russian = set( "ёйцукенгшщзхъфывапролджэячсмитьбюЁЙЦУКЕНГШЩЗХЪФЫВАПРОЛДЖЭЯЧСМИТЬБЮ") english = set("qwertyuiopasdfghjklzxcvbnmQWERTYUIOPASDFGHJKLZXCVBNM") text = message.text # filling the variable text chat title, description etc. if message.chat.id > 0: user = message.from_user text += user.first_name if user.last_name: text += user.last_name else: chat = get_chat(message.chat.id) if chat.title: text += chat.title if chat.description: text += chat.description text = set(text) languages['Russian'] = bool(russian & text) or (message.from_user.language_code == 'ru') languages['English'] = bool(english & text) or (message.from_user.language_code == 'en') return languages
def system_check(message): """Show which options are chosen in system""" database = Database() chat = database.get('chats', ('id', message.chat.id)) system = database.get('systems', ('id', chat['system'])) print(system) text = 'Настройки по умолчанию:\n\n' for feature in FEATURES: system_property = system[feature] if system_property == 2: text += f"{FEATURES_TEXTS['Russian'][FEATURES.index(feature)]}: \n✅ Включено\n" text += f"/s_{feature}_off Выключить\n\n" elif system_property == 1: text += f"{FEATURES_TEXTS['Russian'][FEATURES.index(feature)]}: \n❌ Выключено\n" text += f"/s_{feature}_on Включить\n\n" reply(message, text)
def money_give(message, person, parameters_dictionary: dict): """Функция обмена деньгами между людьми""" LOG.log(f"money_give invoked to person {person.id}") database = Database() getter = person giver = message.from_user money = parameters_dictionary['value'] system = database.get('chats', ('id', message.chat.id))['system'] value_getter = get_person(message, getter, system, database)['money'] value_giver = get_person(message, giver, system, database)['money'] money_name_word = get_word_object( get_system_configs(system)['money_name'], 'Russian') money_name = money_name_word.cased_by_number(abs(money), if_one_then_accusative=True) if money < 0: reply(message, "Я вам запрещаю воровать") elif money == 0: reply(message, "Я вам запрещаю делать подобные бессмысленные запросы") else: if money > value_giver: reply(message, "Не хватает {}".format(money_name_word.genitive_plural())) else: value_getter += money value_giver -= money giv_m = send(giver.id, "#Финансы\n\nВы успешно перевели {} {} на счёт {}. " "Теперь у вас их {}".format(money, money_name, person_link(getter), value_giver), parse_mode='HTML') get_m = send( getter.id, "#Финансы\n\nНа ваш счёт переведено {} {} со счёта {}. " "Теперь у вас их {}".format(money, money_name, person_link(giver), value_getter), parse_mode='HTML') if get_m: get_m = "🔔 уведомлён(а)" else: get_m = "🔕 не уведомлён(а)" if giv_m: giv_m = "🔔 уведомлён(а)" else: giv_m = "🔕 не уведомлён(а)" reply(message, "{} передал(а) {} {} {}!".format(person_link(giver), person_link(getter), money, money_name), parse_mode='HTML') send( admin_place(message, database), f"#Финансы #f{getter.id} #f{giver.id}\n\n" f"{person_link(getter)} [{value_getter - money} --> {value_getter}] {get_m}\n" f"{person_link(giver)} [{value_giver + money} --> {value_giver}] {giv_m}\n", parse_mode='HTML') database.change(value_getter, 'money', 'members', ('id', getter.id), ('system', system)) database.change(value_giver, 'money', 'members', ('id', giver.id), ('system', system))
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 check_access_to_a_storage(message, storage_name, is_write_mode, to_check_vulgarity=True): """Checks if some storage can be accessed""" database = Database() storages_dict = get_storage_json() if storage_name in storages_dict.keys(): storage = storages_dict[storage_name] if is_write_mode: if message.from_user.id not in storage['moders']: reply( message, "У вас отсутствует разрешение добавлять контент в это хранилище :-(" ) return False return True if message.chat.id > 0: return True system = database.get('chats', ('id', message.chat.id))['system'] if to_check_vulgarity and storage['is_vulgar']: return loud_feature_is_available(message, message.chat.id, system, 'erotic_commands') return loud_feature_is_available(message, message.chat.id, system, 'standard_commands') reply(message, "Хранилища '{}' не существует".format(storage_name)) return False
def is_suitable(inputed, person, command_type, system=None, loud=True): """Function to check if this command can be permitted in current chat""" database = Database() # determine if input is a message or a callback query if isinstance(inputed, CallbackQuery): message = inputed.message else: message = inputed # determine which system chat belongs to, and check for requirements chat = database.get('chats', ('id', message.chat.id)) if chat and not system: system = chat['system'] chat_configs = get_system_configs(system) requirements = chat_configs['commands'][command_type] # check if requirement for this command type is a rank or appointment if isinstance(requirements, list): # Requirement is a list return rank_required(inputed, person, system, requirements[0], loud=loud) if isinstance(requirements, str): # Requirement is a string return appointment_required(message, person, system, requirements, loud=loud) return False
def del_chat(message): """Removes chat from the system.""" chat = message.chat.id database = Database() if database.get('chats', ('id', chat)): database.remove('chats', ('id', chat)) reply(message, "Чат успешно удалён")
def appointment_required(message, person, system, appointment, loud=True): """Checks if person has appointment required for something""" database = Database() true_false = database.get("appointments", ('id', person.id), ('appointment', appointment), ('system', system)) if not true_false and loud: reply(message, "Вам для этого нужна должность {}".format(appointment)) return true_false
def money_fund(message, parameters_dictionary): """Transfer money to the chat fund""" database = Database() giver = message.from_user money = parameters_dictionary['value'] chat = database.get('chats', ('id', message.chat.id)) system = chat['system'] value_giver = database.get('members', ('id', giver.id), ('system', system))['money'] value_system = database.get('systems', ('id', system))['money'] money_name_word = get_word_object( get_system_configs(system)['money_name'], 'Russian') money_name = money_name_word.cased_by_number(abs(money), if_one_then_accusative=True) if money < 0: reply(message, "Я вам запрещаю воровать") elif money == 0: reply(message, "Я вам запрещаю делать подобные бессмысленные запросы") else: if money > value_giver: reply(message, "Не хватает {}".format(money_name_word.genitive_plural())) else: if value_system != 'inf': value_system = int(value_system) value_system += money value_giver -= money text = f"#Финансы\n\nВы успешно перевели {money} {money_name} в фонд чата. " \ f"Теперь у вас их {value_giver}" giv_m = value_marker(send(giver.id, text), "🔔 уведомлён(а)", "🔕 не уведомлён(а)") reply(message, "{} заплатил(а) в банк {} {}!".format( person_link(giver), money, money_name), parse_mode='HTML') answer = f"#Финансы #f{giver.id}\n\n" if value_system != 'inf': answer += f"#Бюджет [{value_system - money} --> {value_system}]\n" answer += f"{person_link(giver)} [{value_giver + money} --> {value_giver}] {giv_m}\n" send(admin_place(message, database), answer, parse_mode='HTML') database.change(value_giver, 'money', 'members', ('id', giver.id), ('system', system)) database.change(value_system, 'money', 'systems', ('id', system))
def update_all_members(message): """Updates all the messages, usernames and nicknames""" sent = reply(message, "Начинаю обновление...") database = Database(to_log=False) chat = database.get('chats', ('id', message.chat.id)) system = chat['system'] members = list(database.get_many('members', ('system', system))) system_update = SystemUpdate(message.chat.id, system, members, sent) system_update.start()
def get_one_language(message): """Analyzes the language that is suitable for some situation""" database = Database() entry = database.get('languages', ('id', message.chat.id)) if entry: return entry['language'] reply( message, "Если вы говорите на русском, напишите '/lang Русский'\n\n" "If you speak English, type '/lang English'\n\n") return ''
def set_money_name(message): """Change money's name in json""" database = Database() mode = ' '.join(message.text.split()[1:]) chat = database.get('chats', ('id', message.chat.id)) system = chat['system'] if mode: update_systems_json(system, mode, 'money_name') reply(message, "OK!") else: reply(message, "После команды введите название валюты")
def chat_check(message): """Show which options are chosen in chat""" database = Database() database.change(message.chat.title, 'name', 'chats', ('id', message.chat.id)) if message.chat.username: database.change('public', 'type', 'chats', ('id', message.chat.id)) database.change(message.chat.username, 'link', 'chats', ('id', message.chat.id)) else: database.change('private', 'type', 'chats', ('id', message.chat.id)) database.change('None', 'link', 'chats', ('id', message.chat.id)) # Здесь конец chat = database.get('chats', ('id', message.chat.id)) system = database.get('systems', ('id', chat['system'])) text = 'Настройки этого чата:\n\n' for feature in FEATURES: mark = '' microtext = '' system_property = system[feature] chat_property = chat[feature] if system_property: # Feature is suggested if chat_property == 2: # Feature is set default mark += '⚙' microtext += ' (по умолчанию)' chat_property = system_property - 1 if chat_property: mark = '✅' + mark microtext = 'Работает' + microtext else: mark = '❌' + mark microtext = 'Не работает' + microtext text += f"{FEATURES_TEXTS['Russian'][FEATURES.index(feature)]}: \n{mark} {microtext}\n" if '⚙' in mark or '❌' in mark: text += f"/{feature}_on Включить на постоянку\n" if '⚙' in mark or '✅' in mark: text += f"/{feature}_off Выключить на постоянку\n" if '⚙' not in mark: text += f"/{feature}_default Поставить значение по умолчанию\n" text += '\n' reply(message, text)
def update_greetings_json(message, which_greeting: str): """Changes greetings in some system""" database = Database() data = cf.get_systems_json() system = database.get('chats', ('id', message.chat.id))['system'] system_configs = data[system] text = cf.entities_saver(message.text, message.entities) text = ' '.join(text.split()[1:]) system_configs['greetings'][which_greeting] = text data[system] = system_configs cf.write_systems_json(data) reply(message, 'Поставлен текст: "{}"'.format(text), parse_mode='HTML')
def day_set(message, day, language): """Set the day of person's birthday""" days = (31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31) database = Database() month = database.get('members', ('id', message.from_user.id))['month_birthday'] - 1 if not month: reply(message, "Сначала поставь месяц рождения") elif day > days[month]: month = MONTHS_PREPOSITIONAL[month][language] reply(message, "В {} нет столько дней".format(month.lower())) else: reply(message, "Ставлю человеку с ID {} день рождения {}".format(message.from_user.id, day)) database.change(day, 'day_birthday', 'members', ('id', message.from_user.id))
def in_mf(message, command_type, or_private=True, loud=True): """Позволяет регулировать использование команл вне чатов и в личке""" if message.chat.id > 0: # is a private chat if loud and not or_private: reply(message, "Эта команда отключена в ЛС") return or_private database = Database() chat = database.get('chats', ('id', message.chat.id)) if not chat: if loud: reply(message, "Доброго времени суток! Перед тем как мной пользоваться, " "ответьте мне на 1 вопрос: " "Этот чат новый или связан с уже существующим чатом?", reply_markup=ADD_CHAT_KEYBOARD) return False # Начинаем оруэлловщину person = left_new_or_else_member(message) system = chat['system'] chat_configs = get_system_configs(system) get_person(message, person, system, database, system_configs=chat_configs) counter(message, person) # Заканчиваем оруэлловщину if command_type == 'financial_commands' and not chat_configs['money']: reply(message, "В этом чате система денег не включена. Смотрите /money_help") return False if command_type is None: return True if feature_is_available(message.chat.id, system, command_type): return True if loud and not database.get('systems', ('id', system), (command_type, 0)): reply( message, "В данном чате команды типа {} не поддерживаются. " "Проверьте /chat".format(command_type)) return False