aboutsummaryrefslogtreecommitdiffstats
path: root/arthur/__main__.py
blob: 8f70f2b8f739406ebc40bf582691d76b354292cf (plain) (blame)
1
2
3
4
5
6
7
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
"""Entrypoint for King Arthur."""

import asyncio

import aiohttp
import aiohttp.http
import discord
from discord.ext import commands

import arthur
from arthur.bot import KingArthur
from arthur.config import CONFIG
from arthur.log import logger, setup_sentry


async def main() -> None:
    """Entry async method for starting the bot."""
    intents = discord.Intents.default()
    intents.message_content = True
    intents.members = True
    intents.dm_typing = False
    intents.dm_reactions = False
    intents.invites = False
    intents.webhooks = False
    intents.integrations = False
    user_agent = f"github.com/python-discord/king-arthur ({aiohttp.http.SERVER_SOFTWARE})"

    async with aiohttp.ClientSession(headers={"User-Agent": user_agent}) as session:
        arthur.instance = KingArthur(
            guild_id=CONFIG.guild_id,
            http_session=session,
            command_prefix=commands.when_mentioned_or(*CONFIG.prefixes),
            allowed_roles=(CONFIG.devops_role,),
            case_insensitive=True,
            intents=intents,
            max_messages=100,
        )
        async with arthur.instance as bot:
            await bot.start(CONFIG.token.get_secret_value())


setup_sentry()

with logger.catch():
    asyncio.run(main())