-
Notifications
You must be signed in to change notification settings - Fork 0
Extra functies en commando's voor de bot
Om een eigen avatar toe te kennen aan de bot zoek je een jpg of png foto van wat je als avatar wilt nemen. Deze moet je dan in het begin van je code openen en inlezen. Als het bestand is ingelezen moet er alleen nog bij het on_ready event gezegd worden dat de avatar de ingelezen foto is. De onderstaande code laat zien hoe je het in het python script moet zetten
pfp_path = "avatar.jpg"
fp = open(pfp_path, 'rb')
pfp = fp.read()
@bot.event
async def on_ready():
await bot.user.edit(avatar = pfp)
print('Bot opgestart en ingelogd als:')
print(bot.user.name)
print(bot.user.id)
print('------')
In deze code wordt er vanuit gegaan dat "avatar.jpg" in dezelfde map staat als Workshop.py. Als de code snel achter elkaar word opgestart kan het zijn dat er een foutmelding wordt gegeven dat de avatar niet zo snel achter elkaar kan worden aangepast. Echter zal de bot wel opstarten en zal dit niet voor problemen zorgen.
Om een eigen helpfunctie te schrijven moet eers de standaard helpfunctie worden uitgeschakeld dit wordt gedaan door bij het aanmaken van de bot het help command op None te zetten.
bot = commands.Bot(command_prefix='?', description=description, help_command=None)
In deze regel kan je ook de prefix aanpassen naar wat je wilt door tussen de aanhalingstekens (waar nu een ? staat) te zetten wat de prefix moet zijn
Als je dit hebt gedaan maak je een nieuw commando aan met als naam def. In dit commando start je met een Embed aan te maken. Deze Embed moeten 3 parameters worden meegegeven:
- title: de titel van de embed
- description: een korte beschrijving van waarover de embed gaat
- color: de kleur van de embed. vooraf gedefinieerde discord kleuren
Dit is de basis van de embed. Om nu de commando's er in te zetten moeten er velden worden toegevoegd deze velden bevatten opnieuw 3 parameters:
- name: de naam van het commando
- value: de uitleg van het commando
- inline: of de velden langs elkaar mogen geplaatst worden als dit mogelijk is.
Als alle velden/commando's zijn toegevoegd moet de embed alleen nog worden verzonden naar het kanaal met een send commando. De volgende code laat een voorbeeld zien van een eigen helpfunctie
@bot.group(invoke_witout_command=True)
async def help(ctx):
await ctx.channel.purge(limit=1)
embed = discord.Embed(title = "Help", description = "Uitleg van comando's. gebruik ?help [commando] voor extra uitleg \n <> betekend moet gebruikt worden, [] betekend mag gebuikt worden", color = discord.Colour.blue())
embed.add_field(name="?purge <x>", value="verwijderen van x aanal berichten", inline=False)
embed.add_field(name="?help", value="laat dit scherm", inline=False)
embed.add_field(name="?foto", value="Er wordt foto gemaakt en doorgestuurd.", inline=False)
embed.add_field(name="?video [x]", value="Er wordt een video van x seconden gemaakt en doorgestuurd\nAls er niks wordt megegeven wordt er een video van 3 seconden gemaakt", inline=False)
embed.add_field(name="?beveiliging <x>", value="De beveiliging wordt aan of uit gezet \nGebruik Aan of Uit op de plaats van x", inline=False)
embed.add_field(name="?meting", value="De temperatuur en luchtvochtigheid worden opgemeten.", inline=False)
embed.add_field(name="?schakelaar <x>", value="De relais wordt aan en uit gezet.\nGebruik Aan of Uit op de plaats van x", inline=False)
await ctx.send(embed = embed)
Het purge commando is een commando om een x aantal berichten te kunnen verwijderen. Dit wordt heel simpel gedaan met het purge commando van discord zelf.
async def purge(ctx, number : int):
"""verwijderen van x aantal berichten"""
await ctx.channel.purge(limit=number+1)
Echter als de bot dit commando nu moet uitvoeren zal het niet lukken omdat de bot niet de rechten heeft om dit te mogen doen. Dit kan simpel gedaan worden door naar server instellingen in discord te gaan (1) In de instellingen moet de instelling tab Roles(rollen) worden geselecteerd (2). Op het plusje gedrukt worden om een nieuwe rol toe te voegen (3) en een naam aan de rol gegeven worden (4) Als de role een naam heeft moet je naar onder scrollen tot je bij text channel permissions de manage Messages instelling vind. Deze instelling moet je aanvinken (5) en dan opslaan (6). Als de rol is aangemaakt moet hij alleen nog worden toegediend aan de bot. Dit wordt gedaan door naar de Members instelling tab te gaan (7). Langs de naam van de bot op het plusje te drukken (8). En dan de rol die je net hebt aangemaakt aan te klikken (9)