Bot discord w pythonie – discord.py od podstaw #4

Trochę o embedach.

Dzisiaj trochę opowiem o embedach w discordzie i jak je wysyłać używając biblioteki discord.py.

Co to jest właściwie embed (ten discordowy)? Jest to rodzaj wiadomości, która znacznie wyróźnia się od innych „zwykłych” wiadomości, choćby swoją wielkością, kolorem tła, kolorowym paskiem.

W discord.py za embedy odpowiada klasa Embed. Posiada ona m.in takie atrybuty jak colour, czyli ten kolorowy pasek, który widzimy po lewej stronie embedu, footer, który odpowiada za elementy w stopce naszego embedu itd.

Dobra, przejdzimy do praktyki, napiszemy bota, który wysyła embed z niebieskim paskim, informacją o użytkowniku (avatar, nick, tag), który wywołał komendę oraz zdjęcie (mem) – będzie to główny element naszego embedu.

Weźmy kod z poprzedniego artykułu, gdzie używaliśmy api do pobierania memów, dorobimy po prostu embed. Dodatkowo potrzebujemy zaimportować bibliotekę embedy, możemy to zrobić importując po prostu cała bibliotekę discorda albo tylko embedy. Ja zaimportują same embedy.

import requests
from discord.ext import commands
from discord import Embed

bot = commands.Bot(command_prefix='$')

@bot.command()
async def nazwa_komendy(ctx):
    r = requests.get('https://ivall.pl/memy')
    json_data = r.json()
    image_url = json_data['url']
    
    embed = Embed(title="Mem", color=3447003)

Okej, zaimportowaliśmy klasę Embed i stworzyliśmy instancję klasy Embed. Tytuł naszego embeda to Mem, a kolor to niebieski. Nasz kolor to system heksadecymalny przekonwertowany na system decymalny (hex na dec). Wygląda to aktualnie tak

Musimy jeszcze dodać naszego mema i informacje o użytkowniku, który wywołał komendę oraz oczywiście wysłać embed. Dodajmy zdjęcie do naszego embedu, użyjemy do tego metody set_image.

embed.set_image(url=image_url)

Parametr url to link do zdjęcia, a zmienna image_url to właśnie link do naszego mema. Pozostało tylko dodanie informacji o użytkowniku.

embed.set_footer(icon_url=ctx.author.avatar_url, text=f"{ctx.author.name}#{ctx.author.discriminator}")

Używamy tutaj metody set_footer, odpowiedzialnej za ustawianie stopki embedu. Parametr icon_url to zawsze jakieś zdjęcie, w tym przypadku avatar użytkownika wywołującego komendę. Text to po prostu tekst, który znajduje się w stopce, tutaj jest to nazwa użytkownika + jego tag. Pozostaje nam tylko wysłać embed.

await ctx.send(embed=embed)

Zmienna embed to nasza instancja klasy Embed, całość wygląda tak:

Nasz kod prezentuje się następująco:

import requests

from discord.ext import commands
from discord import Embed

bot = commands.Bot(command_prefix='$')

@bot.command()
async def nazwa_komendy(ctx):
    r = requests.get('https://ivall.pl/memy')
    json_data = r.json()
    image_url = json_data['url']
    
    embed = Embed(title="Mem", color=35531)
    embed.set_image(url=image_url)
    embed.set_footer(icon_url=ctx.author.avatar_url, text=f"{ctx.author.name}#{ctx.author.discriminator}")

    await ctx.send(embed=embed)

bot.run('Token')

Mam nadzieję, że tym artykułem przybliżyłem niektórym embedy w discordzie 🙂

Jeden komentarz

  1. Thx, ale zamiast ivall.pl/memy użyłem gif bin i zmieniłem żeby losowało jeszcze raz jeśli jest 404.

Zostaw komentarz