Command   A
last analyzed

Complexity

Total Complexity 1

Size/Duplication

Total Lines 7
Duplicated Lines 0 %

Importance

Changes 0
Metric Value
wmc 1
dl 0
loc 7
c 0
b 0
f 0
rs 10
1
#    Copyright 2017 Starbot Discord Project
2
# 
3
#    Licensed under the Apache License, Version 2.0 (the "License");
4
#    you may not use this file except in compliance with the License.
5
#    You may obtain a copy of the License at
6
# 
7
#        http://www.apache.org/licenses/LICENSE-2.0
8
# 
9
#    Unless required by applicable law or agreed to in writing, software
10
#    distributed under the License is distributed on an "AS IS" BASIS,
11
#    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12
#    See the License for the specific language governing permissions and
13
#    limitations under the License.
14
15
class Command():
16
    '''Store information about a command'''
17
    def __init__(self, plugin, name, shortdesc='no description', devcommand=False):
18
        self.plugin = plugin
19
        self.name = name
20
        self.shortdesc = shortdesc
21
        self.devcommand = devcommand
22
23
def is_command(message_in, prefix, command):
24
    '''Check if a given message is a command'''
25
26
    # Get user.
27
    if message_in.server:
28
        me = message_in.server.me
29
    else:
30
        me = message_in.channel.me
31
32
    #First we check if the message starts with our prefix
33
    if message_in.content.startswith(prefix):
34
        pass
35
36
    #Otherwise, we check if the message starts with a ping for the bot
37
    elif message_in.content.startswith(me.mention):
38
        pass
39
40
    #Otherwise, the inputted message does not start with a valid bot trigger
41
    else:
42
        return False
43
44
    # The first part of the message, before the first space
45
    command_try = message_in.content.split(' ')
46
47
    # If the first part of the message is equal to the server prefix + the command name
48
    # This would be used for commands with arguments
49
    if command_try[0] == prefix + command.name:
50
        return True
51
52
    # If the entire inputted message is equal to a command
53
    # This will mean the command has no arguments
54
    elif message_in.content == prefix + command.name:
55
        return True
56
57
    # First check that the first word in the message is a mention for the bot, a.k.a. an @ ping
58
    # Then we check that the second word in the message is the name of a command
59
    # This would mean that the command has been used with arguments
60
    elif command_try[0] == me.mention and command_try[1] == command.name:
61
        return True
62
63
    # First we check that the firct word in the message is a mention for the bot
64
    # Then we check that the rest of the message is equal to the name of a command
65
    # This would mean that the command has no arguments
66
    elif message_in.content == me.mention + command.name:
67
        return True
68
69
    # We have exhausted the possibilities for running a command, so it must not be a command.
70
    else:
71
        return False
72