Ejemplo n.º 1
0
def helper(message):
    """Предоставляет человеку список команд"""
    LOG.log(str(message.from_user.id) + ": helper invoked")
    database = Database()
    answer = '<b>Команды:</b>\n\n'
    if message.chat.id < 0:  # Command is used in chat
        system = database.get('chats', ('id', message.chat.id))['system']
        answer += '<b>Общие команды:</b>\n' \
                  '/me - Присылает вашу запись в базе данных\n' \
                  '/anon - Прислать анонимное послание в админский чат (если таковой имеется)\n' \
                  '/members - Прислать в личку перечень участников (нынешних и бывших) и их ID\n' \
                  '/messages_top - Прислать в личку топ участников по сообщениям\n' \
                  '/warns - Посмотреть, у кого сколько предупреждений\n\n'
        # Helps
        answer += '<b>Помощь и менюшки:</b>\n'
        answer += '/help - Прислать это сообщение\n'\
                  '/money_help - Финансовый режим\n'\
                  '/chat - Показать настройки в чате\n'
        if len(database.get_many(
                'chats',
            ("system", system))) > 1:  # More than 1 chat in system
            answer += '/system - Показать настройки во всей системе (по умолчанию)\n'
        answer += '\n<b>Хранилище:</b>\n'\
                  '/storages - Посмотреть список хранилищ\n'\
                  '/get [хранилище] [номер] - Получать контент из хранилища,' \
                  'если номер не указан, будет прислан случайный контент из хранилища\n'\
                  '/size [хранилище] - Получить инфо о количестве контента и модеров хранилища\n\n'
        if feature_is_available(message.chat.id, system, 'standard_commands'):
            answer += '<b>Развлекательные команды:</b>\n'
            answer += '/minet - Делает приятно\n'
            answer += '/meme - Присылает мем\n'
            answer += '/shuffle [x] [элементы через пробел] - перемешать элементы. ' \
                      'Число x необязательно, но если указано, ' \
                      'то бот оставит только x первых элементов\n\n'
        if is_suitable(message, message.from_user, 'boss', loud=False):
            answer += '<b>Базовые админские команды:</b>\n'
            answer += '/update - Пересчитывает сообщения, ' \
                      'никнеймы и юзернеймы всех участников чата\n'
            answer += '/messages [число сообщений] - ' \
                      'Изменить количество сообщений от участника в этом чате\n'
            answer += '/warn [число варнов]- Дать варн(ы) (3 варна = бан)\n'
            answer += '/unwarn [число варнов]- Снять варн(ы)\n'
            answer += '/mute [количество часов] - Запретить писать в чат\n'
            answer += '/ban - Дать бан\n'
            answer += '/kick - Кикнуть (то есть чел сразу сможет вернуться)\n'
            answer += '/guest - Снять ограничения, забрать админку\n\n'
        if is_suitable(message, message.from_user, 'uber', loud=False):
            answer += '<b>Продвинутые админские команды:</b>\n'
            answer += '/admin - Снять ограничения, дать админку\n'
            answer += '/senior_admin - Снять бан, дать продвинутую админку\n\n'
        if is_suitable(message, message.from_user, 'chat_changer', loud=False):
            answer += '<b>Настройщики чатов:</b>\n'
            answer += '/add_chat [ID системы чатов] - Добавить чат в систему чатов\n' \
                      '/set_limit [x] - Поставить кулдаун на вход. Когда кто-то заходит, ' \
                      'следующие x секунд никто не сможет зайти\n'
            answer += '/admin_place - Отметить чат как админский\n'
            answer += '/standard_greetings [текст] — Изменить приветствие для простого человека\n' \
                      '/captcha_greetings [текст] — Изменить приветствие при капче\n' \
                      '/admin_greetings [текст] — Изменить приветствие для админа\n' \
                      '/full_greetings [текст] — Изменить приветствие для полного админа\n' \
                      "<i>Вставьте в текст '{name}' без кавычек там, " \
                      "где нужно обратиться к участнику по нику</i>\n\n"

        answer += "<b>Примечание:</b> " \
                  "командами типа /me можно отвечать на сообщения других людей, " \
                  "тогда команда выполнится на выбранном человеке. " \
                  "Ещё вы можете после команды написать ID человека (можно достать " \
                  "в /members), чтобы не отвлекать его от дел :3\n\n"
        answer += f'<b><i>ID вашей системы: {system} </i></b>'
    else:  # Command is used in PM
        answer += '/help - Прислать это сообщение\n'
        answer += '/minet - Делает приятно\n'
        answer += '/drakken - Присылает арт с Доктором Драккеном\n'
        answer += '/meme - Присылает мем\n'
        answer += '/art - Присылает картину\n'
        answer += '/storages - Посмотреть список хранилищ\n'
        answer += '/get [хранилище] - Получать случайный контент из хранилища\n'
        answer += '/size [хранилище] - Получить инфо о количестве контента и модеров хранилища\n'
        answer += '/shuffle [x] [элементы через пробел] - перемешать элементы. ' \
                  'Число x необязательно, но если указано, ' \
                  'то бот оставит только x первых элементов\n\n'
        answer += 'В чате мой функционал значительно шире'

    reply(message, answer, parse_mode='HTML')
Ejemplo n.º 2
0
def month_set(message, month):
    """Set the month of person's birthday"""
    database = Database()
    reply(message, "Ставлю человеку с ID {} месяц рождения {}".format(message.from_user.id, month))
    database.change(month, 'month_birthday', 'members', ('id', message.from_user.id))
Ejemplo n.º 3
0
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)
Ejemplo n.º 4
0
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))