File "a.py", line 2
x = discord.File("./Main/Saved/saved.png")
^
IndentationError: unexpected indent
Indentasyonu duzelttikten sonra sunu:
File "a.py", line 1, in <module>
my_img = discord.Embed(title=title, url=url, description=description, colour=0x00FF00)
NameError: name 'discord' is not defined
import’lari duzelltikten sonra bunu:
File "a.py", line 3, in <module>
my_img = discord.Embed(title=title, url=url, description=description, colour=0x00FF00)
NameError: name 'title' is not defined
Resimdeki kahverengi olan resmi embed’in içerisinde paylaşmak istiyorum @adlgrbz
edit: resimleri bot web sayfasından aldığı bilgilerle kendisi oluşturuyor ve saved klasörüne atıyor sonrasında resmi alıp embed’in içinde msj olarak göndermesini istiyorum.
@Heyopa set_image metodu görselleri url yoluyla alıyor. Yani embed içine herhangi bir görsel dosyasını yerleştiremezsin. Eğer embed yukarıda, görselin alt tarafında ayrı biçimlerde olmasını tercih edersen. İlk önce embed mesajını gönder daha sonra görsel dosyasını gönder.
@adlgrbz peki elimdeki resmi nasıl otomatik bir şekilde web’e yükleyip url’sini alabilirim. Yani diğer şekilde görüntü hoş durmuyor daha düzgün ve net bir görüntü elde etmek istiyorum da
Şimdi biraz çakallık yapacağız Görseli web ortamına yüklemek yerine direk botun bulunduğu bir sunucuda bir kanal açıp görseli o kanala göndereceğiz. Görsel Discord’a yüklendiğinde web’e yüklenmiş olacak dolayısıyla silinmediği sürece kendine ait bir URL’si olacak. Daha sonra bu mesajdan URL bilgisini alıp komutun verildiği kanala embed içinde gönderebiliriz.
Şu kodları yazdım örnek olması açısından. Sen kendine göre uyarlarsın.
@commands.command()
async def test(self, ctx):
# Görsel dosyalarını göndereceğimiz kanalı ID'sini girerek tanımlıyoruz
image_channel = await self.bot.fetch_channel(675019780561960960)
file = discord.File("image.png")
# Görseli tanımladığımız kanala mesaj olara gönderiyoruz ve mesaj
# bilgilerini alabilmek açısından bir değişkene atıyoruz.
image_message = await image_channel.send(file=file)
embed = discord.Embed()
# Mesajın eklerine ulaşıyoruz ve görselin URL'sini alıyoruz.
embed.set_image(url=image_message.attachments[0].url)
await ctx.send(embed=embed)
attachments metodu bir liste içinde döndüğü için ilk olarak liste içine girdim.
Umarım anlamışsındır mantığını. Ek olarak görsellerin silindiği zaman URL adreslerinin kaybolduğunu düşünüyordum. Evet doğrudan ulaşılmıyor ama embed içinde görsel hala görünür durumda…
Ek: image_channel değişkenini fonksiyon dışında tanımlamak daha mantıklı olacaktır…
Siz yazarken benimde aklıma aynı şey geldi tam onunla alakalı uğraşıyordum ilaç oldu resmen çok teşekkür ederim. Şimdi benim yazma tarzımda bot online olarak hiç bir zaman discord’da gözükmüyor o yüzden async ve await özelliklerini kullanmıyorum ama örnek için çok teşekkür ederim şimdi inceleyip kendi koduma uyarlayacağım aşağıya bütün kodun github üzerinden paylaştığım linki koyacağım incelemek isterseniz diye. Discord kısmını upload etmedim ettiğimde editleyerek belirteceğim.
@adlgrbz aşağıdaki gibi bir hata alıyorum yukarıda verdiğiniz kodu neredeyse birebir koduma uyarladım ama işin içinden çıkamadım tekrar rahatsız ettim sizi de kusura bakmayın.
Ignoring exception in command heyobot:
Traceback (most recent call last):
File "C:\Users\Batuh\AppData\Local\Programs\Python\Python38-32\lib\site-packages\discord\ext\commands\bot.py", line 892, in invoke
await ctx.command.invoke(ctx)
File "C:\Users\Batuh\AppData\Local\Programs\Python\Python38-32\lib\site-packages\discord\ext\commands\core.py", line 790, in invoke
await self.prepare(ctx)
File "C:\Users\Batuh\AppData\Local\Programs\Python\Python38-32\lib\site-packages\discord\ext\commands\core.py", line 751, in prepare
await self._parse_arguments(ctx)
File "C:\Users\Batuh\AppData\Local\Programs\Python\Python38-32\lib\site-packages\discord\ext\commands\core.py", line 670, in _parse_arguments
transformed = await self.transform(ctx, param)
File "C:\Users\Batuh\AppData\Local\Programs\Python\Python38-32\lib\site-packages\discord\ext\commands\core.py", line 516, in transform
raise MissingRequiredArgument(param)
discord.ext.commands.errors.MissingRequiredArgument: message is a required argument that is missing.
Bu kısımda self.Bot yerine client kullanın sanarım siz bot değişkenini client olarak tanımladınız. Ve onun önündede await deyimi olmalı. Ayrıca tek argüman alıyor fonksiyon. Sadece channel ID’sini verin fonksiyona.
Send işlemlerinde await deyimi kullanmalısın. message.channel.send yerine message.send kullan.
Kodu çalıştırmadım sadece bakarak yorumladım. Bunları değiştir baklım sonuç ne olacak…
Ek olarak bu fonksiyon bir sınıf yapısı içerisinde mi? Eğer değil ise self deymini falan kaldır.
Bitti vallaha bitti oldu sonunda çalıştı. github’da tamamen bütün kodlarıyla yayında tabii sizin yardımınız sayesinde @adlgrbz çok teşekkür ederim tekrar tekrar bir buçuk aydır uğraşıyordum