Passed
Push — main ( 4d254e...b95c28 )
by Bartosz
02:30 queued 01:14
created

build.cogs.spotcog.SpotCog.on_message()   C

Complexity

Conditions 9

Size

Total Lines 32
Code Lines 26

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
cc 9
eloc 26
nop 2
dl 0
loc 32
rs 6.6666
c 0
b 0
f 0
1
"""
2
Cog with role related commands available in the Bot.
3
4
Current commands:
5
/remove_spot
6
7
"""
8
import json
9
10
import cogs
11
import discord
12
import cogs.cogbase as cogbase
13
from cogs.databasecog import DatabaseCog
14
from discord.utils import get
15
from discord.ext import commands
16
from discord_slash import SlashContext, cog_ext
17
18
monster_type_dict = {0: "rare", 1: "legendary", 2: "event1", 3: "event2", 4: "common"}
19
20
21
class SpotCog(cogbase.BaseCog):
22
    def __init__(self, base):
23
        super().__init__(base)
24
25
    # Ping monster role
26
    @commands.Cog.listener()
27
    async def on_message(self, ctx):
28
        if ctx.author.id == self.bot.user.id:
29
            return
30
31
        prefix = "/"
32
        cords_beginning = ["-", "0", "1", "2", "3", "4", "5", "6", "7", "8", "9"]
33
34
        # If common spotted
35
        if ctx.channel.id == self.bot.ch_common:
36
            if ctx.content[0] in cords_beginning:
37
                await DatabaseCog.db_count_spot(ctx.author.id, monster_type_dict[4])
38
                await DatabaseCog.db_save_coords(ctx.content, monster_type_dict[4])
39
            else:
40
                await ctx.delete()
41
42
        elif ctx.channel.category and ctx.channel.category.id == self.bot.cat_spotting:
43
            if ctx.content.startswith(prefix):
44
                spotted_monster = await self.get_monster(ctx, ctx.content.replace(prefix, ""))
45
                if spotted_monster:
46
                    role = get(ctx.guild.roles, name=spotted_monster["name"])
47
                    await ctx.delete()
48
                    await ctx.channel.send(f"{role.mention}")
49
                    await DatabaseCog.db_count_spot(ctx.author.id,
50
                                                    monster_type_dict[spotted_monster["type"]])
51
                    return
52
                else:
53
                    await ctx.channel.send(
54
                        f"{ctx.author.mention} monster not found; are you sure that name is correct?", delete_after=5)
55
            elif ctx.content[0] in cords_beginning:
56
                await DatabaseCog.db_save_coords(ctx.content, ctx.channel.name)
57
                return
58
59
60
def setup(bot: commands.Bot):
61
    bot.add_cog(SpotCog(bot))
62