CalculatorCommands

Bases: Cog

Class that holds the commands related to calculator functions such as sum, multiply and subtract. This class extends commands.Cog from discord.

Parameters:
  • bot

    Discord API client

  • logger

    Logger object for logging purposes

Attributes:
  • bot

    Discord API client

  • logger

    Logger object for logging purposes

  • hidden (bool) –

    Attribute that determines if this list of command should show in the help command or not. If false, will show in help.

  • __cog_name__ (str) –

    Command designation for the help command

Source code in /Users/caoma/Documents/Programming/GIT/SkyWizz/skywizz/cogs/calculator_commands.py
  8
  9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
class CalculatorCommands(commands.Cog):
    """
    Class that holds the commands related to calculator functions such as
    sum, multiply and subtract.
    This class extends `commands.Cog` from discord.

    Args:
        bot: Discord API client
        logger: Logger object for logging purposes

    Attributes:
        bot: Discord API client
        logger: Logger object for logging purposes
        hidden (bool): Attribute that determines if this list of
                 command should show in the help command or not.
                 If `false`, will show in help.
        __cog_name__ (str): Command designation for the help command
    """

    def __init__(self, bot, logger):
        self.bot = bot
        self.logger = logger
        self.hidden = False
        self.__cog_name__ = "Calculator Commands"
        self.logger.info(f"Loaded {self.__cog_name__}")

    @commands.cooldown(10, 30, commands.BucketType.user)
    @commands.command(name='sum')
    async def sum_numbers(self, ctx, *args):
        """
        Command that sums two or more given numbers

        Args:
            *args (float): Variable length argument list, this means you can have multiple numbers, but must pass 2 numbers.

        Example:
            `!sum 50 90`

        Usage:
            `sum <number1> <number2> <...>`
        """
        valid_numbers = []
        for arg in args:
            try:
                num = float(arg)
                valid_numbers.append(num)
            except ValueError:
                pass

        if not valid_numbers:
            error_embed = skywizz.messages.invalid_argument(given_arg=args,
                                                            valid_args=
                                                            '5, 4, 10, ...')
            await ctx.send(embed=error_embed)
            return
        else:
            text = str(sum(valid_numbers))
        embed = embd.newembed(title='Sum Result',
                              description=f'{ctx.author.mention} {text}')
        await ctx.send(embed=embed)

    @commands.cooldown(10, 30, commands.BucketType.user)
    @commands.command(name='product', aliases=['prod'])
    async def multiply(self, ctx, *args):
        """
        Command that multiplies two or more numbers

        Args:
            *args (float): Variable length argument list. This means it receives multiple numbers but must pass 2 numbers minimum.

        Example:
            `!product 50 10`

        Usage:
            `product <number1> <number2> <...>`

        """
        valid_numbers = []
        for arg in args:
            try:
                num = float(arg)
                valid_numbers.append(num)
            except ValueError:
                pass

        if not valid_numbers:
            error_embed = skywizz.messages.invalid_argument(given_arg=args,
                                                            valid_args=
                                                            '5, 4, 10, ...')
            await ctx.send(embed=error_embed)
            return
        else:
            text = str(tools.product(valid_numbers))
        embed = embd.newembed(title='Product Result',
                              description=f'{ctx.author.mention} {text}')
        await ctx.send(embed=embed)

    @commands.cooldown(10, 30, commands.BucketType.user)
    @commands.command(name='subtract')
    async def subtract_numbers(self, ctx, *args):
        """
        Command that subtracts multiple numbers from another

         Parameters:
            *args (float): Variable length argument list. This means it receives multiple numbers but must receive atleast two.

        Example:
            `!subtract 50 10.5`

        Usage:
            `subtract <number1> <number2> <...>`

        """
        valid_numbers = []
        for arg in args:
            try:
                num = float(arg)
                valid_numbers.append(num)
            except ValueError:
                pass

        if not valid_numbers:
            error_embed = skywizz.messages.invalid_argument(given_arg=args,
                                                            valid_args=
                                                            '5, 4, 10, ...')
            await ctx.send(embed=error_embed)
            return
        else:
            text = str(tools.subtract(valid_numbers))

        embed = embd.newembed(title='Subtraction Result',
                              description=f'{ctx.author.mention} {text}')

        await ctx.send(embed=embed)

multiply(ctx, *args) async

Command that multiplies two or more numbers

Parameters:
  • *args (float, default: () ) –

    Variable length argument list. This means it receives multiple numbers but must pass 2 numbers minimum.

Example

!product 50 10

Usage

product <number1> <number2> <...>

/Users/caoma/Documents/Programming/GIT/SkyWizz/skywizz/cogs/calculator_commands.py
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
@commands.cooldown(10, 30, commands.BucketType.user)
@commands.command(name='product', aliases=['prod'])
async def multiply(self, ctx, *args):
    """
    Command that multiplies two or more numbers

    Args:
        *args (float): Variable length argument list. This means it receives multiple numbers but must pass 2 numbers minimum.

    Example:
        `!product 50 10`

    Usage:
        `product <number1> <number2> <...>`

    """
    valid_numbers = []
    for arg in args:
        try:
            num = float(arg)
            valid_numbers.append(num)
        except ValueError:
            pass

    if not valid_numbers:
        error_embed = skywizz.messages.invalid_argument(given_arg=args,
                                                        valid_args=
                                                        '5, 4, 10, ...')
        await ctx.send(embed=error_embed)
        return
    else:
        text = str(tools.product(valid_numbers))
    embed = embd.newembed(title='Product Result',
                          description=f'{ctx.author.mention} {text}')
    await ctx.send(embed=embed)

subtract_numbers(ctx, *args) async

Command that subtracts multiple numbers from another

Parameters: *args (float): Variable length argument list. This means it receives multiple numbers but must receive atleast two.

Example

!subtract 50 10.5

Usage

subtract <number1> <number2> <...>

/Users/caoma/Documents/Programming/GIT/SkyWizz/skywizz/cogs/calculator_commands.py
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
@commands.cooldown(10, 30, commands.BucketType.user)
@commands.command(name='subtract')
async def subtract_numbers(self, ctx, *args):
    """
    Command that subtracts multiple numbers from another

     Parameters:
        *args (float): Variable length argument list. This means it receives multiple numbers but must receive atleast two.

    Example:
        `!subtract 50 10.5`

    Usage:
        `subtract <number1> <number2> <...>`

    """
    valid_numbers = []
    for arg in args:
        try:
            num = float(arg)
            valid_numbers.append(num)
        except ValueError:
            pass

    if not valid_numbers:
        error_embed = skywizz.messages.invalid_argument(given_arg=args,
                                                        valid_args=
                                                        '5, 4, 10, ...')
        await ctx.send(embed=error_embed)
        return
    else:
        text = str(tools.subtract(valid_numbers))

    embed = embd.newembed(title='Subtraction Result',
                          description=f'{ctx.author.mention} {text}')

    await ctx.send(embed=embed)

sum_numbers(ctx, *args) async

Command that sums two or more given numbers

Parameters:
  • *args (float, default: () ) –

    Variable length argument list, this means you can have multiple numbers, but must pass 2 numbers.

Example

!sum 50 90

Usage

sum <number1> <number2> <...>

/Users/caoma/Documents/Programming/GIT/SkyWizz/skywizz/cogs/calculator_commands.py
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
@commands.cooldown(10, 30, commands.BucketType.user)
@commands.command(name='sum')
async def sum_numbers(self, ctx, *args):
    """
    Command that sums two or more given numbers

    Args:
        *args (float): Variable length argument list, this means you can have multiple numbers, but must pass 2 numbers.

    Example:
        `!sum 50 90`

    Usage:
        `sum <number1> <number2> <...>`
    """
    valid_numbers = []
    for arg in args:
        try:
            num = float(arg)
            valid_numbers.append(num)
        except ValueError:
            pass

    if not valid_numbers:
        error_embed = skywizz.messages.invalid_argument(given_arg=args,
                                                        valid_args=
                                                        '5, 4, 10, ...')
        await ctx.send(embed=error_embed)
        return
    else:
        text = str(sum(valid_numbers))
    embed = embd.newembed(title='Sum Result',
                          description=f'{ctx.author.mention} {text}')
    await ctx.send(embed=embed)