コード例 #1
0
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))
コード例 #2
0
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)
コード例 #3
0
def check_storage_size(message, storage_name):
    """ Checks how many moderators and how much media there is in a storage """
    storage = get_list_from_storage(storage_name)
    moderators_number = len(storage['moders'])
    media_number = len(storage['contents'])
    moderator_word = get_word_object('модератор', 'Russian')
    moderator = moderator_word.cased_by_number(moderators_number)

    descr = dict_to_natural_language(Counter(map(lambda x: x[1], storage['contents'])))
    if descr:
        reply(message, "На данный момент в хранилище {} {} {} и {} медиа, {}".format(
            storage_name, moderators_number, moderator, media_number, descr))
    else:
        reply(message, "На данный момент в хранилище {} {} {} и {} медиа".format(
            storage_name, moderators_number, moderator, media_number))
コード例 #4
0
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))
コード例 #5
0
ファイル: boss_commands.py プロジェクト: artyom0906/MF-Bot
def money_pay(message, person, parameters_dictionary):
    """Платит человеку деньги из бюджета чата"""
    LOG.log(f"money pay invoked to person {person.id}")
    database = Database()
    chat = database.get('chats', ('id', message.chat.id))
    system = chat['system']
    bot_money = database.get('systems', ('id', system))['money']
    if bot_money != 'inf':
        bot_money = int(bot_money)
    p_id = person.id
    money = parameters_dictionary['value']
    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)
    person_money = get_person(message, person, system, database)['money']
    if money == 0:
        reply(message, "Я вам запрещаю делать подобные бессмысленные запросы")
    elif money < 0:
        money = -int(money)  # Делаем из отрицательного числа положительное
        if person_money - money >= 0:
            person_money -= money
            if bot_money != 'inf':
                bot_money += money
            sent = send(
                p_id, "#Финансы\n\n"
                f"С вашего счёта было снято {money} {money_name} в банк. "
                f"Теперь у вас {person_money}")
            sent = cf.value_marker(sent, "🔔 уведомлён(а)", "🔕 не уведомлён(а)")
            reply(message,
                  'У {} забрали {} {} в банк!'.format(person_link(person),
                                                      money, money_name),
                  parse_mode='HTML')
            answer = "#Финансы " + f"#f{p_id}\n\n"
            if bot_money != 'inf':
                answer += f"#Бюджет [{bot_money - money} --> {bot_money}]\n"
            answer += f"{person_link(person)} [{person_money + money} --> {person_money}] {sent}"
            send(admin_place(message, database), answer, parse_mode='HTML')
        else:
            reply(
                message, "У людей число {} должно быть больше нуля".format(
                    money_name_word.genitive_plural()))
    else:
        if bot_money != 'inf' and bot_money < money:
            reply(
                message, "У нас нет столько {} в банке".format(
                    money_name_word.genitive_plural()))
        else:
            person_money += money
            sent = send(
                p_id, "#Финансы\n\n"
                f"На ваш счёт было переведено {money} {money_name} из банка. "
                f"Теперь у вас {person_money}")
            sent = cf.value_marker(sent, "🔔 уведомлён(а)", "🔕 не уведомлён(а)")
            reply(message,
                  '{} получил(а) из банка {} {}!'.format(
                      person_link(person), money, money_name),
                  parse_mode='HTML')
            answer = "#Финансы " + f"#f{p_id}\n\n"
            if bot_money != 'inf':
                bot_money -= money
                answer += f"#Бюджет [{bot_money + money} --> {bot_money}]\n"
            answer += f"{person_link(person)} [{person_money - money} --> {person_money}] {sent}"
            send(admin_place(message, database), answer, parse_mode='HTML')
    database.change(person_money, 'money', 'members', ('id', p_id),
                    ('system', system))
    if bot_money != 'inf':
        database.change(bot_money, 'money', 'systems', ('id', system))