def __init__(self):
        self.prefix = config.PREFIX

        # Load database
        self.db = Database()
        self.db.create_tables()
        self.db.load_data()

        super().__init__(command_prefix=self.get_prefix, description=config.DESCRIPTION, pm_help=None)
Exemple #2
0
    def __init__(self):
        self.config = dataIO.load_json("data/chappie/config.json")
        self.db = Database(database=self.config["DATABASE"],
                           user=self.config["DATABASE_USER"],
                           password=self.config["DATABASE_PASSWORD"],
                           host=self.config["DATABASE_HOST"],
                           port=self.config["DATABASE_PORT"])

        super().__init__(command_prefix="!",
                         description=description,
                         shard_id=0,
                         status=discord.Status.dnd,
                         activity=discord.Game(name="with humans"),
                         fetch_offline_members=False,
                         help_attrs=dict(hidden=True))
        self.session = aiohttp.ClientSession(loop=self.loop)
        self.uptime = datetime.datetime.utcnow()

        for extension in initial_extensions:
            try:
                self.load_extension(extension)
            except Exception as e:
                print(f'Failed to load extension {extension}.',
                      file=sys.stderr)
                traceback.print_exc()
Exemple #3
0
    def __init__(self):
        self.config = dataIO.load_json("data/chappie/config.json")
        self.db = Database(database=self.config["DATABASE"],
                           user=self.config["DATABASE_USER"],
                           password=self.config["DATABASE_PASSWORD"],
                           host=self.config["DATABASE_HOST"],
                           port=self.config["DATABASE_PORT"])

        super().__init__(client_id=self.config["REDDIT_CLIENT_ID"],
                         client_secret=self.config["REDDIT_CLIENT_SECRET"],
                         password=self.config["REDDIT_PASSWORD"],
                         user_agent=self.config["REDDIT_USER_AGENT"],
                         username=self.config["REDDIT_USERNAME"])
Exemple #4
0
 def __init__(self, bot):
     """
     I would put all the channel IDs into a dict for their respective attrs and IDs but
     I don't feel like dealing with instance errors
     """
     self.bot = bot
     self.pagination_amt = 5
     self.scrape_channel = self.get_channel('scrape_channel')
     self.kenneled_role = self.get_channel('kenneled_role')
     self.muted_role = self.get_channel('muted_role')
     self.log_channel = self.get_channel('log_channel')
     self.error_channel = self.get_channel('error_channel')
     self.kennel_channel = self.get_channel('kennel_channel')
     self.joins_channel = self.get_channel('joins_channel')
     self.starboard_channel = self.get_channel('starboard_channel')
     self.ban_channel = self.get_channel('ban_channel')
     self.unban_channel = self.get_channel('unban_channel')
     self.db = Database('./dbs/moderator.db')
Exemple #5
0
 def __init__(self, bot):
     self.bot = bot
     self.database = Database()
     self.dataIO = DataIO()
Exemple #6
0
import time
from configparser import *

from discord.ext import commands, timers
from loguru import logger

from cogs.utils.checks import is_bot_owner_check
from cogs.utils.database import Database

#initiate logger test
logger.add(f"file_{str(time.strftime('%Y%m%d-%H%M%S'))}.log",
           rotation="500 MB")

auth = ConfigParser()
auth.read('auth.ini')  # All my usernames and passwords for the api
database = Database(path='cogs/peribot.db')


def load_cogs(folder):
    os.chdir(folder)
    files = []
    for file in glob.glob("*.py"):
        file = re.search('^([A-Za-z1-9]{1,})(?:.py)$', file).group(1)
        files.append(file)
    return files


def config():
    with open('config.json', 'r') as f:
        config = json.load(f)
        return config
class FactorioQuizBot(commands.Bot):
    def __init__(self):
        self.prefix = config.PREFIX

        # Load database
        self.db = Database()
        self.db.create_tables()
        self.db.load_data()

        super().__init__(command_prefix=self.get_prefix, description=config.DESCRIPTION, pm_help=None)

    async def get_prefix(self, message):
        prefixes = set()
        if isinstance(message.channel, discord.abc.PrivateChannel):
            prefixes.add(self.prefix)
            return commands.when_mentioned_or(*prefixes)(bot, message)
        guild_config = next(cfg for cfg in self.db.configs if cfg["guild_id"] == message.guild.id)
        prefixes.add(guild_config["prefix"])
        return commands.when_mentioned_or(*prefixes)(bot, message)

    def create_config_guild(self, guild):
        for cfg in self.db.configs:
            if guild.id == cfg["guild_id"]:
                break
        else:
            # guild not found in database, then create config
            new_config = self.db.create_config(guild.id, config.PREFIX, config.LANGUAGE, config.DELETE_MESSAGES)
            self.db.configs.append(new_config)
            self.db.add_new_config(new_config)

    def create_score(self, guild, member):
        if member.bot:
            return
        for scr in self.db.scores:
            if guild.id == scr["guild_id"] and member.id == scr["user_id"]:
                break
        else:
            # score not found in database, then create score
            new_score = self.db.create_score(guild.id, member.id, 0)
            self.db.scores.append(new_score)
            self.db.save_score(new_score)

    async def on_ready(self):
        """Event called when the bot is ready"""

        # Check if guilds were added while offline
        for guild in self.guilds:
            self.create_config_guild(guild)

        # Check if members were added while offline
        for guild in self.guilds:
            for member in guild.members:
                self.create_score(guild, member)

        try:
            for g in self.guilds:
                guild_config = next(cfg for cfg in self.db.configs if cfg["guild_id"] == g.id)
                bot_member = g.get_member(config.BOT_ID)
                if bot_member is None:
                    logger.warning(f'Cannot find FactorioBot in member list of guild {g.name}')
                else:
                    await bot_member.edit(nick=f'[{guild_config["prefix"]}] FactorioBot',
                                          reason="FactorioBot's prefix has changed")
        except Forbidden as forbidError:
            print(forbidError)

        # Load cogs
        self.remove_command("help")
        for cog in initial_cogs:
            try:
                self.load_extension(cog)
                logger.info(f'{cog} successfully loaded.')
            except Exception as e:
                logger.error(f'Failed to load extension {cog}.', e)

    async def on_guild_join(self, guild):
        """Event called when client join a guild or client create a new guild"""

        # Create new config
        self.create_config_guild(guild)

        # Add score to each member
        for member in guild.members:
            self.create_score(guild, member)

    async def on_guild_remove(self, guild):
        """Event called when guild is removed from client"""

        # Remove score from each member
        self.db.scores = [scr for scr in self.db.scores if guild.id != scr["guild_id"]]
        for member in guild.members:
            self.db.delete_score(guild.id, member.id)

        # Remove config
        self.db.configs = [cfg for cfg in self.db.configs if guild.id != cfg["guild_id"]]
        self.db.delete_config(guild.id)

        # Remove faq
        self.db.faqs = [faq for faq in self.db.faqs if guild.id != faq["guild_id"]]
        self.db.delete_faq(guild.id)

    async def on_member_join(self, member):
        """Event called when a member joins a guild."""

        # Add score
        self.create_score(member.guild, member)

    async def on_member_remove(self, member):
        """Event called when a member leave a guild."""

        # Remove score
        self.db.scores = [scr for scr in self.db.scores
                          if member.guild.id != scr["guild_id"] and member.id == scr["user_id"]]
        self.db.delete_score(member.guild.id, member.id)
Exemple #8
0
 def __init__(self, bot):
     self.bot = bot
     self.database = Database()
     self.session = aiohttp.ClientSession()
Exemple #9
0
    def __init__(self, *args, **kwargs):
        super().__init__(*args, **kwargs)

        self.client_session = None
        self.DB = Database()
Exemple #10
0
 def __init__(self, bot):
     super().__init__(bot)
     self.bot = bot
     self.db = Database('./dbs/reminders.db')
     self.check_reminders.start()