Example Usage

The below is a simplistic implementation of how to use this package in your next discord bot.

 1import os
 2
 3import discord
 4from discord.ext import commands
 5from levelling import Level, LevelUpPayload
 6
 7
 8class Bot(commands.Bot):
 9    def __init__(self, *args, **kwargs):
10        super().__init__(*args, **kwargs)
11
12        self.level = Level(self)
13
14    async def on_ready(self):
15        print(f"-----\nLogged in as: {self.user.name} : {self.user.id}\n-----")
16
17    async def on_message(self, message):
18        leveled_up = await self.level.propagate(message)
19        if leveled_up:
20            await self.on_level_up(leveled_up)
21
22        await self.process_commands(message)
23
24    async def on_level_up(self, payload: LevelUpPayload):
25        # This is triggered when a Member levels up
26        member = payload.guild.get_member(payload.member.id)
27        embed = discord.Embed(
28            title=f"`{member.display_name}` has leveled up to level `{payload.level}`!"
29        )
30        await payload.channel.send(embed=embed)
31
32
33if __name__ == "__main__":
34    token = os.getenv("TOKEN")
35    Bot(command_prefix="!", intents=discord.Intents.all()).run(token)