Exemple #1
0
 def __init__(self):
     self.data = DataProvider()
     self.luis = Luis()
     self.db = Database()
     self.poi = [
         'city center', 'theatre', 'supermarket', 'cinema', 'museum'
     ]
Exemple #2
0
    async def punish(self, ctx, type, mention: discord.Member):
        # Check if user is initialized first
        db_ailie = Database()
        if not db_ailie.is_initialized(ctx.author.id):
            await ctx.send(
                "Do `ailie;initialize` or `a;initialize` first before anything!"
            )
            db_ailie.disconnect()
            return

        # Check if receiver is initialized
        if not db_ailie.is_initialized(mention.id):
            await ctx.send(f"{mention.mention} haven't initialized yet.")
            db_ailie.disconnect()
            return

        if type.lower() == "toxic":
            negative_gems = -999999999999999999
            db_ailie.store_gems(mention.id, negative_gems)
            msg = await ctx.send(
                f"<@{mention.id}> you have been kicked down to the bottom " +
                "of the toxic pool as that is where you belong to. " +
                "You must've made my Creator mad or something. " +
                "Serve you right! ")
            await asyncio.sleep(1)
            await msg.reply(f"`{negative_gems:,d}` gems for you!")
Exemple #3
0
    async def sleep(self, ctx):
        # Check if user is initialized first
        db_ailie = Database()
        if not db_ailie.is_initialized(ctx.author.id):
            await ctx.send(
                "Do `ailie;initialize` or `a;initialize` first before anything!"
            )
            db_ailie.disconnect()
            return

        reply = [
            f"Go to sleep okay, <@{ctx.author.id}>? ***SMACKS***",
            f"What now, <@{ctx.author.id}>? Sleep? Okay..",
            f"To be honest with you, <@{ctx.author.id}>. " +
            "I don't think I can sle-",
            f"Good night, <@{ctx.author.id}>. *closes eyes*"
        ]
        msg = await ctx.send(random.choice(reply))

        # Bot reacts with salt
        msg = await msg.reply("Z")
        await asyncio.sleep(1)
        await msg.edit(content=f"{msg.content}z")
        await asyncio.sleep(1)
        await msg.edit(content=f"{msg.content}z")
        await asyncio.sleep(1)
        await msg.edit(content=f"{msg.content}.")
        await asyncio.sleep(1)
        await msg.edit(content=f"{msg.content}.")
        await asyncio.sleep(1)
Exemple #4
0
class Controller():
    #will control EVERYTHING
    def __init__(self):
        self._db = Database(Env_Vars["database"]["host"], Env_Vars["database"]["user"], Env_Vars["database"]["password"], "test")
        #db.create_database("test")
        #db.check_database_exist("test")
        coloumns = "id INT AUTO_INCREMENT PRIMARY KEY, mykey VARCHAR(255),long_url VARCHAR(255)"
        self._db.create_table("mytable", coloumns)
    def db_insert(self, url):
        mydb = self._db 
        try:
            try:
                #if url is already in db, just reuse
                key = mydb.get_from_table("mytable", "long_url", url)[1]
            except:
                key = self.prepare_url()
                mydb.insert_into_table("mytable", "mykey, long_url", [key, url])
            return key
        except Exception as ex:
            print(ex)
    def db_get(self, key):
        mydb = self._db
        try:
            return mydb.get_from_table("mytable", "mykey", key)[2]
        except Exception as ex:
            print(ex)
    def prepare_url(self):
        ID = Tools().genID()
        return ID
        
Exemple #5
0
    async def pressF(self, ctx, mention: discord.Member):
        # Check if user is initialized first
        db_ailie = Database()
        if not db_ailie.is_initialized(ctx.author.id):
            await ctx.send(
                "Do `ailie;initialize` or `a;initialize` first before anything!"
            )
            db_ailie.disconnect()
            return

        # Check if receiver is initialized
        if not db_ailie.is_initialized(mention.id):
            await ctx.send(f"Tell {mention.mention} to initialize first!")
            db_ailie.disconnect()
            return

        reply = [
            f"Pay respect to the fallen member, {mention.mention}..",
            f"Be strong, {mention.mention}.",
            f"*Believing is the key, {mention.mention}..*",
            f"Never stop trying. You're not alone, {mention.mention}!",
            f"{mention.mention}, keep fighting!",
            f"Sending support to {mention.mention}. From yours truly, " +
            f"<@{ctx.author.id}>.",
        ]
        msg = await ctx.send(random.choice(reply))

        db_ailie.disconnect()

        # Bot reacts with 'F'
        await msg.add_reaction("🇫")
    def save_data(self):
        try:
            mongo_address = os.getenv('MONGO_ADDRESS')
            db_name = os.getenv('DATABASE_NAME')
            collection = 'clubs'

            database = Database(mongo_address, db_name)

            data = Crawler.extract_data(self)

            if data != None:
                data['club_id'] = self.id
                data['club']['slug'] = TreatData.slugify(
                    data['club']['team_name'])

                now = datetime.now()
                now = now.strftime("%Y-%m-%d %H:%M:%S")
                data['created_at'] = now

                # if data['club']['address']:
                if 'address' in data['club'].keys():
                    club_geo_data = GeoData(data['club']['address'])
                    data['club']['geo_data'] = club_geo_data.get_lat_long()

                if 'name' in data['stadium'].keys():
                    stadium_geo_data = GeoData(data['stadium']['name'])
                    data['stadium'][
                        'geo_data'] = stadium_geo_data.get_lat_long()

                return database.save_not_exists(data, collection)
        except Exception:
            return None
Exemple #7
0
 def __init__(self, player: dict = {}):
     self._db = Database()
     self.id = player['id'] if 'id' in player else self._db.get_next_id('player')
     self.last_name = player['last_name'] if 'last_name' in player else ''
     self.first_name = player['first_name'] if 'first_name' in player else ''
     self.dob = player['dob'] if 'dob' in player else ''
     self.gender = player['gender'] if 'gender' in player else ''
     self.ranking = int(player['ranking']) if 'ranking' in player else ''
Exemple #8
0
    async def initialize(self, ctx):
        db_ailie = Database()

        if db_ailie.initialize_user(ctx.author.id):
            await ctx.send(
                "You can now use the other commands, "
                + f"<@{ctx.author.id}>. Have fun!"
            )
        else:
            await ctx.send(
                f"You are already initialized, <@{ctx.author.id}>. "
                + "No need to initialize for the second time. Have fun!"
            )
Exemple #9
0
def timed_job():
    mongo_address = os.getenv('MONGO_ADDRESS')
    db_name = os.getenv('DATABASE_NAME')
    collection = 'team_id'

    database = Database(mongo_address, db_name)

    id = Database.get_team_id()

    url = f'https://uk.soccerway.com/teams/spain/futbol-club-barcelona/{id}'

    item = Crawler(url, id)
    saved_item = item.save_data()

    query = {"id": id}

    if saved_item != None:
        if type(saved_item) is dict:
            print(saved_item['error'])
            data = {"$set": {"status": "crawled"}}
            Database.update(data, query, collection)
        else:
            print(f'Created {id} as {saved_item}')
            data = {"$set": {"status": "crawled"}}
            Database.update(data, query, collection)
    else:
        print(f'{id} not found')
        data = {"$set": {"status": "not found"}}
        Database.update(data, query, collection)
Exemple #10
0
def messages():
    messages = Database().get_messages('abc')
    res = []
    for msg in messages:
        res.append(msg.dict())
    enable_corss()
    return json.dumps(res)
Exemple #11
0
def places():
    places = Database().get_places('abc')
    res = []
    for msg in places:
        res.append(msg.__dict__)
    enable_corss()
    return json.dumps(res)
Exemple #12
0
    async def feedback(self, ctx, *feedback):
        # Check if user is initialized first
        db_ailie = Database()
        if not db_ailie.is_initialized(ctx.author.id):
            await ctx.send(
                "Do `ailie;initialize` or `a;initialize` first before anything!"
            )
            db_ailie.disconnect()
            return

        db_ailie.disconnect()

        if feedback:
            # Process complain
            feedback = " ".join(feedback)
            await self.notifyOwner(ctx, feedback, "agree")

            official_server = False
            if ctx.guild.id == int(os.getenv("GUILD_ID")):
                official_server = True

            if not official_server:
                await ctx.send(f"Ding dong, <@{ctx.author.id}>! " +
                               "Your message has been logged. " +
                               "You might wanna join Ailie's server " +
                               "so you can resolve issues and " +
                               "keep updated on Ailie's updated. " +
                               "If so, then do `a;server`.")
            else:
                await ctx.send(f"Ding dong, <@{ctx.author.id}>! " +
                               "Your message has been logged. ")
        else:
            await ctx.send("Can't send anything since you put no messages!")
Exemple #13
0
    async def username(self, ctx, username):
        # Check if user is initialized first
        db_ailie = Database()
        if not db_ailie.is_initialized(ctx.author.id):
            await ctx.send(
                "Do `ailie;initialize` or `a;initialize` first before anything!"
            )
            db_ailie.disconnect()
            return

        db_ailie.set_username(ctx.author.id, username)
        await ctx.send(
            f"Your username is now, {username}. Enjoy, <@{ctx.author.id}>."
        )

        db_ailie.disconnect()
Exemple #14
0
    async def bless(self, ctx, type, mention: discord.Member):
        # Check if user is initialized first
        db_ailie = Database()
        if not db_ailie.is_initialized(ctx.author.id):
            await ctx.send(
                "Do `ailie;initialize` or `a;initialize` first before anything!"
            )
            db_ailie.disconnect()
            return

        # Check if receiver is initialized
        if not db_ailie.is_initialized(mention.id):
            await ctx.send(f"{mention.mention} haven't initialized yet.")
            db_ailie.disconnect()
            return

        if type.lower() == "gems":
            positive_gems = 500000
            db_ailie.store_gems(mention.id, positive_gems)
            msg = await ctx.send(
                f"<@{mention.id}> you are recognized by my Creator.")
            await asyncio.sleep(1)
            await msg.reply(f"`{positive_gems:,d}` gems for you!")
Exemple #15
0
    async def team_delete(self, ctx, key: str):
        # Check if user is initialized first
        db_ailie = Database()
        if not db_ailie.is_initialized(ctx.author.id):
            await ctx.send(
                "Do `ailie;initialize` or `a;initialize` first before anything!"
            )
            db_ailie.disconnect()
            return

        exist = db_ailie.is_team_exists(ctx.author.id, key)

        if not exist:
            await ctx.send(
                "Are you sure they key is correct?"
            )
            db_ailie.disconnect()
            return

        db_ailie.delete_team(ctx.author.id, key)
        await ctx.send(
            f"Deleted your team with `{key}` key, <@{ctx.author.id}>."
        )
Exemple #16
0
    async def pourSalt(self, ctx, mention: discord.Member):
        # Check if user is initialized first
        db_ailie = Database()
        if not db_ailie.is_initialized(ctx.author.id):
            await ctx.send(
                "Do `ailie;initialize` or `a;initialize` first before anything!"
            )
            db_ailie.disconnect()
            return

        # Check if receiver is initialized
        if not db_ailie.is_initialized(mention.id):
            await ctx.send(f"{mention.mention} haven't initialized yet.")
            db_ailie.disconnect()
            return

        db_ailie.disconnect()

        reply = [
            f"*Pours salt on {mention.mention}.. POURING INTENSIFIED!*",
            f"{mention.mention}, get wrecked in mountains of salt!",
            f"THIS IS FOR GETTING LUCKY, {mention.mention}! TAKE ALL THE " +
            "SALT. TAKE IT!",
            "No one is allowed to get this lucky! Especially you, " +
            f"{mention.mention}!",
            f"*Pours multiple bottles of salt at {mention.mention}.*",
            f"Sending boxes of salt to {mention.mention}. " +
            f"From yours truly, <@{ctx.author.id}>.",
            f"<@{ctx.author.id}> wishes there's no cooldown to this command " +
            f"just to keep spamming salt to you, {mention.mention}. HAHA.",
            f"EVERYONE! Come spam salt to, {mention.mention}!",
        ]
        msg = await ctx.send(random.choice(reply))

        # Bot reacts with salt
        await msg.add_reaction("🧂")
Exemple #17
0
 def __init__(self, tournament: dict = {}):
     self._db = Database()
     self.nb_players = 8
     if tournament and 'id' in tournament:
         self.id = tournament['id']
         existing_tournament = self.get_tournament(self.id)[0][0]
         self.players = existing_tournament['players'] or []
         self.matches = []
         self.rounds = existing_tournament['rounds'] or {}
         self.time_control = existing_tournament['time_control'] or 'bullet'
         self.description = existing_tournament['description'] or None
         self.name = existing_tournament['name'] or None
         self.location = existing_tournament['location'] or tournament['location']
         self.date = existing_tournament['date'] or tournament['date']
     else:
         self.id = None
         self.players = []
         self.matches = []
         self.rounds = {}
         self.time_control = 'bullet'
         self.description = None
         self.name = None
         self.location = None
         self.date = None
Exemple #18
0
    async def server(self, ctx):
        # Check if user is initialized first
        db_ailie = Database()
        if not db_ailie.is_initialized(ctx.author.id):
            await ctx.send(
                "Do `ailie;initialize` or `a;initialize` first before anything!"
            )
            db_ailie.disconnect()
            return

        db_ailie.disconnect()

        await ctx.send("Here's the link to Ailie's server, " +
                       f"<{os.getenv('SERVER_INVITE')}>.")
Exemple #19
0
    async def ping(self, ctx):
        # Check if user is initialized first
        db_ailie = Database()
        if not db_ailie.is_initialized(ctx.author.id):
            await ctx.send(
                "Do `ailie;initialize` or `a;initialize` first before anything!"
            )
            db_ailie.disconnect()
            return

        db_ailie.disconnect()

        await ctx.send(
            f"Pong, <@{ctx.author.id}>! Sending back this message with " +
            f"{round(self.bot.latency * 1000)}ms latency.")
Exemple #20
0
class Player:
    """Create a player"""

    def __init__(self, player: dict = {}):
        self._db = Database()
        self.id = player['id'] if 'id' in player else self._db.get_next_id('player')
        self.last_name = player['last_name'] if 'last_name' in player else ''
        self.first_name = player['first_name'] if 'first_name' in player else ''
        self.dob = player['dob'] if 'dob' in player else ''
        self.gender = player['gender'] if 'gender' in player else ''
        self.ranking = int(player['ranking']) if 'ranking' in player else ''

    def create(self):
        self._db.create('player', self.serialize())

    def update(self, new_data: dict):
        doc = self._db.read('player', **{'id': new_data['id']})[0][0]
        doc_id = doc.doc_id
        self._db.update('player', item_id=doc_id, **new_data)

    def serialize(self):
        return {
            'id': self.id,
            'last_name': self.last_name.upper(),
            'first_name': self.first_name.capitalize(),
            'dob': self.dob,
            'gender': self.gender,
            'ranking': self.ranking
        }

    def get_rank(self, p_id):
        item = self.get_item(p_id)
        return item['id'], item['ranking']

    def get_players(self):
        return self._db.read('player')

    def get_player_name(self):
        item = self.get_item(self.id)
        return f"{item['last_name'].upper()} {item['first_name'].capitalize()}"

    def get_item(self, p_id):
        return self._db.read(table='player', **{'id': p_id})[0][0]
Exemple #21
0
    async def version(self, ctx):
        # Check if user is initialized first
        db_ailie = Database()
        if not db_ailie.is_initialized(ctx.author.id):
            await ctx.send(
                "Do `ailie;initialize` or `a;initialize` first before anything!"
            )
            db_ailie.disconnect()
            return

        db_ailie.disconnect()

        # Change upon version update
        version = "1.10.1"

        await ctx.send(f"Hello, <@{ctx.author.id}>! " +
                       f"My current version is `{version}`!")
Exemple #22
0
    async def team_show(self, ctx):
        # Check if user is initialized first
        db_ailie = Database()
        if not db_ailie.is_initialized(ctx.author.id):
            await ctx.send(
                "Do `ailie;initialize` or `a;initialize` first before anything!"
            )
            db_ailie.disconnect()
            return

        teams = db_ailie.get_all_teams(ctx.author.id)

        embed = discord.Embed(color=discord.Color.purple())
        embed.set_author(
            icon_url=ctx.author.avatar_url, name=ctx.author.name
        )

        output = ""
        for team in teams:
            for t in team[1]:
                hero_name = db_ailie.get_hero_name_from_id(t)
                if hero_name is not None:
                    if team[1].index(t) == 0:
                        output = f"`{hero_name}`"
                    else:
                        output = output + "\n" + f"`{hero_name}`"

            embed.add_field(name=team[0], value=output, inline=False)

        if len(teams) == 0:
            embed.add_field(name="Teams", value="None", inline=False)

        await ctx.send(embed=embed)
        if not isinstance(ctx.channel, discord.channel.DMChannel):
            await ctx.send(
                "Busted, now the others can see what heroes are in your team. "
                + "Easy counter on arena. Next time, be smart and send me "
                + f"a Private Message instead, <@{ctx.author.id}>."
            )
Exemple #23
0
    async def team(self, ctx):
        # Check if user is initialized first
        db_ailie = Database()
        if not db_ailie.is_initialized(ctx.author.id):
            await ctx.send(
                "Do `ailie;initialize` or `a;initialize` first before anything!"
            )
            db_ailie.disconnect()
            return
        db_ailie.disconnect()

        msg = await ctx.send(
            f"Time to explain.. Hey, <@{ctx.author.id}>, "
            + "you better read properly. *tsk*"
        )
        await asyncio.sleep(1)
        await msg.reply(
            "Issue `a;team set <key> <hero;hero;hero;hero>` "
            + "to set team."
            + "\nIssue `a;team show` to show team set."
            + "\nIssue `a;team delete` to delete a team."
        )
Exemple #24
0
from helpers.database import Database
import os
from dotenv import load_dotenv
from datetime import datetime

load_dotenv(verbose=True)

mongo_address = os.getenv('MONGO_ADDRESS')
db_name = os.getenv('DATABASE_NAME')
collection = 'team_id'

initial = 9999
final = 20000

now = datetime.now()
now = now.strftime("%Y-%m-%d %H:%M:%S")

database = Database(mongo_address, db_name)

for id in range(int(initial), int(final)):
    exists = Database.connection[f'{collection}'].find_one({"id": id})
    if (exists == None):
        data = {"id": id, "status": "created", "created_at": now}
        print(Database.save(data, collection))
    else:
        print(f'{id} already created')
Exemple #25
0
    async def join(self, ctx, guild_id: int):
        # Check if user is initialized first
        db_ailie = Database()
        if not db_ailie.is_initialized(ctx.author.id):
            await ctx.send(
                "Do `ailie;initialize` or `a;initialize` first before anything!"
            )
            db_ailie.disconnect()
            return

        # Get Guild Master
        guild_master = db_ailie.get_guild_master(guild_id)

        if db_ailie.is_guildless(ctx.author.id):
            if db_ailie.guild_exists(guild_id):
                # Check if guild is full
                if db_ailie.total_members(guild_id) >= 30:
                    await ctx.send(
                        f"The guild is full. Sorry, <@{ctx.author.id}>.")
                    db_ailie.disconnect()
                    return

                # Check if Guild Master is in the Discord Server
                discord_server = self.bot.get_guild(ctx.message.guild.id)
                if not discord_server.get_member(guild_master):
                    await ctx.send("You must be in the same Discord Server " +
                                   "as the Guild Master.")
                    db_ailie.disconnect()
                    return

                # Get Guild details
                guild_name = db_ailie.get_guild_name(guild_id)

                # Get Guild Master's confirmation
                await ctx.send(
                    f"<@{guild_master}>, please choose to accept or decline " +
                    f"<@{ctx.author.id}>'s application to " +
                    f"`{guild_name}`#`{guild_id}` with `Y` or `N`.")

                # Function to confirm application
                def confirm_application(message):
                    return (message.author.id == guild_master and
                            message.content.upper() in ["YES", "Y", "NO", "N"])

                # Wait for Guild Master's confirmation
                try:
                    msg = await self.bot.wait_for("message",
                                                  check=confirm_application,
                                                  timeout=30)

                    # Application accepted
                    if msg.content.upper() in ["YES", "Y"]:
                        db_ailie.join_guild(ctx.author.id, "Member", guild_id)
                        await ctx.send(
                            f"Welcome to `{guild_name}`#`{guild_id}`, " +
                            f"<@{ctx.author.id}>!")
                    else:
                        # Application rejected else:
                        await ctx.send(
                            f"Application denied! Sorry, <@{ctx.author.id}>..")
                except Exception:
                    await ctx.send(
                        "Looks like your application got ignored, " +
                        f"<@{ctx.author.id}>. Ouch!")
            else:
                await ctx.send("The guild you mentioned does not exist.")
        else:
            guild_name = db_ailie.get_guild_name(guild_id)
            await ctx.send(
                "Aren't you a very loyal person? You are already " +
                f"in `{guild_name}`#`{guild_id}`! No, <@{ctx.author.id}>?")

        db_ailie.disconnect()
Exemple #26
0
    async def guild(self, ctx):
        # Check if user is initialized first
        db_ailie = Database()
        if not db_ailie.is_initialized(ctx.author.id):
            await ctx.send(
                "Do `ailie;initialize` or `a;initialize` first before anything!"
            )
            db_ailie.disconnect()
            return

        if not db_ailie.is_guildless(ctx.author.id):
            # Get guild name to present in output
            guild_name = db_ailie.get_guild_name_of_member(ctx.author.id)
            members_output = [[], [], []]

            # Get all the members
            members = db_ailie.get_members_list(ctx.author.id)
            structured_member = ""
            for member in members:
                structured_member = (structured_member +
                                     f"`{self.bot.get_user(member[0])}` ")
                if member[1] is not None:
                    structured_member = (structured_member +
                                         f" a.k.a. `{member[1]}` ")

                if member[2] == "Guild Master":
                    members_output[0].append(structured_member)
                elif member[2] == "Elder":
                    members_output[1].append(structured_member)
                else:
                    members_output[2].append(structured_member)

                structured_member = ""

            # Finally send the list
            embed = discord.Embed(color=discord.Color.purple(), )
            embed.set_author(icon_url=self.bot.user.avatar_url,
                             name=guild_name)
            embed.add_field(
                name="Guild Master 🎓",
                value="".join(members_output[0]),
                inline=False,
            )

            if len(members_output[1]) == 0:
                members_output[1].append("None")

            if len(members_output[2]) == 0:
                members_output[2].append("None")

            embed.add_field(
                name="Elders 👴",
                value="\n".join(members_output[1]),
                inline=False,
            )
            embed.add_field(
                name="Members 🧍",
                value="\n".join(members_output[2]),
                inline=False,
            )
            await ctx.send(embed=embed)
        else:
            await ctx.send("You can't list your Guild members if you're " +
                           f"not in a Guild, <@{ctx.author.id}>.")

        db_ailie.disconnect()
Exemple #27
0
    async def promote(self, ctx, mention: discord.Member, *position):
        # Check if user is initialized first
        db_ailie = Database()
        if not db_ailie.is_initialized(ctx.author.id):
            await ctx.send(
                "Do `ailie;initialize` or `a;initialize` first before anything!"
            )
            db_ailie.disconnect()
            return

        # Initialize variables
        position = " ".join(position)
        position = position.title()

        # Check if author has a guild
        if db_ailie.is_guildless(ctx.author.id):
            await ctx.send(f"You're not even in a Guild, <@{ctx.author.id}>!")
            db_ailie.disconnect()
            return

        # Check if author is Guild Master
        guild_id = db_ailie.get_guild_id_of_member(ctx.author.id)
        guild_master = db_ailie.get_guild_master(guild_id)
        if ctx.author.id != guild_master:
            await ctx.send("You're not privileged to change positions of " +
                           f"other members, <@{ctx.author.id}>.")
            db_ailie.disconnect()
            return

        # Abort command upon changing own position
        if guild_master == mention.id:
            await ctx.send(
                f"Can't change your own position, <@{ctx.author.id}>!")
            db_ailie.disconnect()
            return

        # Check position
        if position.lower() not in ["guild master", "elder", "member"]:
            await ctx.send(
                "The position you entered is invalid. For now, only " +
                "Guild Master, Elder, and Member is available.")
            db_ailie.disconnect()
            return
        else:
            # Check if in the same guild
            guardian_one = db_ailie.get_guild_id_of_member(mention.id)
            guardian_two = db_ailie.get_guild_id_of_member(ctx.author.id)
            if guardian_one == guardian_two:
                if position.lower() == "guild master":
                    # Ask for confirmation to change Guild Master
                    await ctx.send(
                        "Are you sure you want to transfer " +
                        f"Guild Master to {mention.mention}? Reply with " +
                        "`Y` or `N` to confirm.")

                    # Function to confirm promotion to Guild Master
                    def confirm_application(message):
                        return (message.author.id == ctx.author.id
                                and message.content.upper()
                                in ["YES", "Y", "NO", "N"])

                    try:
                        msg = await self.bot.wait_for(
                            "message", check=confirm_application, timeout=30)
                        if msg.content.upper() in ["YES", "Y"]:
                            await ctx.send(
                                "Transferring Guild Master position now..")
                            db_ailie.change_position(guild_master, "Member")
                            db_ailie.change_position(mention.id, position)
                            await ctx.send(
                                f"Changed position of {mention.mention} to " +
                                f"{position}.")
                        else:
                            await ctx.send("Aborting Guild Master transfer!")
                    except Exception:
                        await ctx.send("Timeout!")
                        db_ailie.disconnect()
                        return
                else:
                    db_ailie.change_position(mention.id, position)
                    await ctx.send(
                        f"Changed position of {mention.mention} to {position}."
                    )
            else:
                await ctx.send(
                    "Do it again. But mention someone in your Guild!")

        db_ailie.disconnect()
Exemple #28
0
    async def create(self, ctx, guild_name):
        # Check if user is initialized first
        db_ailie = Database()
        if not db_ailie.is_initialized(ctx.author.id):
            await ctx.send(
                "Do `ailie;initialize` or `a;initialize` first before anything!"
            )
            db_ailie.disconnect()
            return

        # Create a random Guild ID until there is no duplicate
        guild_check = True
        guild_id = 0

        while guild_check:
            guild_id = random.randint(pow(10, 14), (pow(10, 15) - 1))
            guild_check = db_ailie.guild_exists(guild_id)

        # Guild creation if and only if the user is guildless
        if not db_ailie.is_guildless(ctx.author.id):
            await ctx.send(
                "I don't think you should be creating a guild when you " +
                f"already have one. No, <@{ctx.author.id}>?")
            db_ailie.disconnect()
            return

        # Finally, create guild after all checks is done
        db_ailie.create_guild(ctx.author.id, "Guild Master", guild_id,
                              guild_name)
        await ctx.send(
            f"Congratulations, <@{ctx.author.id}>! You have created " +
            f"a Guild named, `{guild_name}` with the ID, `{guild_id}`.")

        db_ailie.disconnect()
Exemple #29
0
    async def quit(self, ctx):
        # Check if user is initialized first
        db_ailie = Database()
        if not db_ailie.is_initialized(ctx.author.id):
            await ctx.send(
                "Do `ailie;initialize` or `a;initialize` first before anything!"
            )
            db_ailie.disconnect()
            return

        # Condition checks
        if not db_ailie.is_guildless(ctx.author.id):
            guild_id = db_ailie.get_guild_id_of_member(ctx.author.id)
            guild_master = db_ailie.get_guild_master(guild_id)
            total_members = db_ailie.total_members(guild_id)
            if total_members != 1:
                if ctx.author.id == guild_master:
                    await ctx.send(
                        "You're the Guild Master and you want to run away from "
                        + f"your responsibilities, <@{ctx.author.id}>? " +
                        "Sorry, but NO!")
                    db_ailie.disconnect()
                    return
                else:
                    db_ailie.quit_guild(ctx.author.id)
                    await ctx.send(f"You're solo now, <@{ctx.author.id}>.")
            else:
                db_ailie.quit_guild(ctx.author.id)
                db_ailie.disband_guild(guild_id)
                await ctx.send(f"You're solo now, <@{ctx.author.id}>.")

        else:
            await ctx.send(
                "Can't quit a Guild when you don't even have one, " +
                f"<@{ctx.author.id}>.")

        db_ailie.disconnect()
Exemple #30
0
from helpers.database import Database
import os
from dotenv import load_dotenv
from datetime import datetime
import time
from helpers.crawler import Crawler

load_dotenv(verbose=True)

mongo_address = os.getenv('MONGO_ADDRESS')
db_name = os.getenv('DATABASE_NAME')
collection = 'team_id'

database = Database(mongo_address, db_name)

id = Database.get_team_id()

url = f'https://uk.soccerway.com/teams/spain/futbol-club-barcelona/{id}'

item = Crawler(url, id)
saved_item = item.save_data()

query = {"id": id}

if saved_item != None:
    if type(saved_item) is dict:
        print(saved_item['error'])
        data = {"$set": {"status": "crawled"}}
        Database.update(data, query, collection)
    else:
        print(f'Created {id} as {saved_item}')