Esempio n. 1
0
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
Esempio n. 2
0
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
Esempio n. 3
0
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)
Esempio n. 4
0
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))
Esempio n. 5
0
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)
Esempio n. 6
0
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))