#Allgemeine Hilfe
1 messages · Page 65 of 1
xD
müssen die ganzen get_something dinger nicht awaited werden?
interessant
sende mal den ganzen error
war das get = nimm aus dem cache
fetch = belager die api mit anfragen
?
man sieht die hälfte nd
kann sein
eine synchron andere asynchron
einrücken
mach ich grad aber meinung zum code?
ich schau mal drüber sekunde
@tawdry leaf
du musst es eindrücken das sollte so aussehen
role
await
das role über await
Ok
bisschen geschmackssache ohne einfluss auf den code, persönlich trenne ich immer ganze imports und teil-imports.
also aus:
from datetime import datetime
import discord
from discord.commands import slash_command
from discord.ext import commands
# würde ich
import discord
from datetime import datetime
from discord.commands import slash_command
from discord.ext import commands
machen
was für automod funktonen gibt es?
Mein Discord Server
► https://discord.gg/zfvbjTEzv6
▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬
Mein Hosting* ► https://tidd.ly/3gJufg6
Code auf Github ► https://github.com/tibue99/tutorial-bot
PYCORD
Docs ► https://docs.pycord.dev/
Guide ► https://guide.pycord.dev/introduction/
Discord Server ► https://discord.gg/pycord
Discord Developer Portal ► https://discord...
aber sonst gut?
Hier fehlt das type-hinting. Timo ist da, besonders in seinen älteren Videos immer zu faul zu 😄
class Profile(commands.Cog):
def __init__(self, bot):
self.bot = bot
# würde ich wie folgt abändern:
class Profile(commands.Cog):
def __init__(self, bot: discord.Bot):
self.bot = bot
# die 2. Version hat den Vorteil, dass man eher autovervollständigung bekommt und die IDE weitere Infos anbietet wenn man seinen Maus über bot oder andere worte nach bot. hält
so sollte es gehen
könntest du das einfacher erklären version 2?
Da könnte man graben, wie das nochmal genau war, dass das command nur für admins sichtbar ist. spart die beschreibung "ist nicht für dich ätsch" müsste aber jetzt auch suchen
@slash_command(description=":no_entry_sign: × Nur für Admins!")
@commands.has_permissions(administrator=True)
async def selfroles(self, ctx, channel: discord.TextChannel):
await ctx.defer() #usw
ich versuchs
Mit dieser init, also wie es in version 1 aussieht, sind stellen im späteren code wo "boot" steht einfach text. Bei Ausführung funktioniert alles wie es soll.
Könntest du mir den hauptteil erklären im Code also json usw.
oke
Eins nach dem anderen 😄
😄
Version 2 und was sich ändert. erstmal sieht das so aus(Bild):
für pycharm bedeutet das es weiß nun mit was man arbeitet. in diesem fall ist es eine selbst geschriebene subklasse eines discord bots.
kommt gleich nochwas zu den praktischen vorteilen
oke
Es kommt immer wieder der error
Hier siehst du wie ich eine selbstgemachte methode aufrufe, die für datenbankzugriffe verwendet wird. dahinter verbirgt sich mysql.
Auf dem Bild kannst du erkennen wie ich anfange "po" für "pool" zu schreiben. Das wird benötigt um sich verbindungen zur datenbank zuweisen zu lassen.
Pycharm schlägt nun auto-vervollständigung, hier das wort "pool" vor.
das kann/kennt es aber nur, weil die Klasse "Boot" (siehe Bild 1) über
"boot: Boot" angegeben wurde und bekannt ist.
Diese Autovervollständigung hilft zum einen die möglichkeiten zu sehen wie man weiter schreiben kann, zu sehen welche möglichkeiten es überhaupt gibt und schreibt man etwas falsches merkt man das fix daran dass es eben unbekannt ist
Zu guter letzt gibt das typ hinting, also das "bot: discord.Bot" oder "boot: Boot" in meinem Fall texte aus, wenn man die maus über einen teil hält. Auch hierzu ein Bild:
Diese text würde nicht auftauchen, wäre nicht angegeben um was es sich bei boot handelt.
(also das aufgepopte)
ich verstehe
@outer ibex Es kommt immer wieder der error
dann ka
Das ist bei mein Regel so
probier nur nicht das nachzuschreiben. Sowohl "boot" als auch "database_access" sind selbst gebastelte sachen. Die gibt es erst wenn man sie gebaut und implementiert hat. 😄
jo, ich versteh jz nur noch eins den hauptteil des Codes bzw. json usw.
schaue
😅 bin gerade nicht sicher zu welchem teil davon du was wissen magst
zu dem code von mir json teil
. oder erklär die zeilen von unter Class
fehlen das 2 fs?
also bei:
[
'Willkommen {member}!',
'{member.mention} ist beigetreten'
]
dass da
[
f'Willkommen {member}!',
f'{member.mention} ist beigetreten'
]
gemeint ist?
ne json sachen
DAS: ```class Welcome(commands.Cog):
def init(self, bot):
self.bot: commands.Bot = bot
self.file_path = 'data.json'
self.default_data = {
'channel_id': 123,
'messages': [
'Willkommen {member}!',
'{member.mention} ist beigetreten'
]
}
if not os.path.exists(self.file_path):
with open(self.file_path, 'w') as f:
json.dump(self.default_data, f, indent=4)
self.data = self.default_data
print(f'Created {self.file_path!r}')
else:
with open(self.file_path, 'r') as f:
self.data = json.load(f)
@commands.Cog.listener()
async def on_member_join(self, member: discord.Member):
channel_id = self.data['channel_id']
channel = self.bot.get_channel(channel_id)
messages = self.data['messages']
message: str = random.choice(messages)
message = message.format(member=member)
await channel.send(message)
@commands.command()
async def test_join(self, ctx):
"""Führt das on_member_join event zum testen aus."""
self.bot.dispatch('member_join', ctx.author)```
das ist doch aus genau der init!
was meckerst du denn? 😄
oha ein "!"
Jaha! 😂 War genau in dem Teil am schauen
anderes ich meine JSON was das ?
sieht aus wie eine dm chat 😄
;D
bei self.default_data war ich.
Achso. Json ist ein recht bekanntes und einfach zu verwendendes Format. Damit kann man mit wenig aufwand daten in eine datei speichern und daraus wieder abrufen.
wesentlich einfacher als datenbanken, performt aber auch wie hüttenkäse
Wo müsste ich den hier etwas ändern ? @commands.Cog.listener()
async def on_member_join(self, member: discord.Member):
channel_id = self.data['channel_id']
channel = self.bot.get_channel(channel_id)
messages = self.data['messages']
message: str = random.choice(messages)
message = message.format(member=member)
await channel.send(message)
Damit dir die info auch was nutzt:
Du baust einen Bot, der auf genau einem Server benutzt werden soll? JSON ist dein Freund, schau dir tutorials dazu an, speicher kram,. sei happy.
Du willst einen Bot bauen der viel Publikum und Verbreitung haben soll?
Bloß kein JSON viel zu lahm.
Das ist sehr verständlich 👍
Freut mich zu hören. Bin Mal ein Panzer fahren.. sind ja auch genug andere da die bestimmt was erklären können 🙂
Bis später
oke... bis später
läuft wieder aufs selbe raus, was ich dir x mal gesagt habe.
So'n code nutzt wenig, wenn er irgendwo kopiert wurde und man nicht versteht was er tut. Ich würde für dein Vorhaben gar kein JSON für irgendwas einsetzen, weil unnötig und viel komplizierter (wenn auch kein hexenwerk) als ein tuple zu lernen und zu verwenden.
lern ihn halt einfach. die ganze energie, die rein ging das lernen umgehen zu wollen reicht inzwischen 3x aus das gemeistert zu haben.
kann mir jemand kurz helfen
wie kann ich die channels also die youtube accounts für die uploade in db machen genau so wie die channel ids
from discord.ext import commands, tasks
import scrapetube
class Youtube(commands.Cog):
def __init__(self, bot):
self.bot = bot
self.channels = {
"Sully_52": f"https://youtube.com/@Sully_52",
"KMC - KurbizMusicCompetition": f"https://youtube.com/@fdmbattleturnier1636",
}
self.videos = {}
@commands.Cog.listener()
async def on_ready(self):
self.check.start()
@tasks.loop(seconds=60)
async def check(self):
discord_channel = self.bot.get_channel(940669588209807390) # hier channel id einfügen
for channel_name in self.channels:
videos = scrapetube.get_channel(channel_url=self.channels[channel_name], limit=5)
video_ids = [video["videoId"] for video in videos]
if self.check.current_loop == 0:
self.videos[channel_name] = video_ids
continue
for video_id in video_ids:
if video_id not in self.videos[channel_name]:
url = f"https://youtu.be/{video_id}"
await discord_channel.send(f"**{channel_name}** hat ein Video hochgeladen\n\n{url}")
self.videos[channel_name] = video_ids
def setup(bot):
bot.add_cog(Youtube(bot))
Hab das mal so gemacht
YouTubeNotificationChannel_ID: Channel_ID die ich aus der .env auslese
YouTubeNotificationRole_ID: Role ID/S die ich aus der .env auslese
ja dann blieb ich lieber bei meinem system obwohl das kaka ist egal danke trotzdem
Kannst die sachen einfach mit ID austauschen geht extremst schnell
hab danke
Hey, wie kann ich mehrere Zeilen auskommentieren in Py-charm?
Danke
Lucky kann man wirklich nicht ein wait_for abbrechen? durch button klick wäre ja voll Genderhaft
mit einen timeout
Erklärbär
timeout (Optional[float]) – The number of seconds to wait before timing out and raising asyncio.TimeoutError.
jaja das hab ich aber wenn man ein button drückt soll dieser kommt ja dieser error nicht der kommt erst nach 180 Sekunden in meinem fall
ich weiß grad nd was du meinst
Was ich erreichen will ist wenn ein user ein button drückt soll das wait_for abgebrochen werden aber asyncio.TimeoutError kommt ja erst nach 180 Sekunden bei mir
und woher soll ich wissen wie du das wait_for auslöst
mit try und except
hm jz check ich gar nix mehr
ja mit self.bot.wait_for
so?
aber wozu brauchst du des wait_for?
damit der user eine nachricht schreibt
aber diesen vorgang kann man auch abbrechen mit einem button
aber wenn man drauf drückt ist ja dieses wait_for noch aktiv
okay
joa
can u help me now?
hab sowas gefunden
hm also musst du beim event einf des hinzufügen 😅
also beim check das er auf messages es abbricht und auf den button
BRO WAS?
das willst du doch machen xD
i show u okay?
jo
ab wo ich auf den Zurück button gedrückt habe will ich das wait_for abgebrochen wird
@commands.command(name='e')
async def edit(self, ctx):
firstbutton = Button(label="test")
await ctx.send('test', components=[firstbutton])
def check(m): return interaction.com...
doch
KANNST DU CALL?
ne leider nicht weil hier auch user getimeoutet sind die mit mir im call sind
okay na gut das ist immer noch nicht das was ich will ich DAFÜR HASSE ICH MEINE ERKLÄR SKILSSa
So lieber @tawdry leaf Landing ich habe im Video auf diesen Zurück button gedrückt und er hat die Nachricht zurück bearbeitet richtig ja richtig, danach hab ich ja eine Nachricht gesendet und der bot hat geantwortet obwohl ich zurück gedrückt habe Oh wie kann das sein weil ich diesen wait_for nicht abgebrochen habe. wie breche ich dieses wait_for ab? damit der bot keine Nachrichten mehr nimmt
das was ich geschickt habe ist das es des beendet wenn man den button drückt verstehe also dein problem weiterhin nd 😄
ich würde es dir gerne im call erklären geht aus komischen gründen nicht
ah
ne doch nd
xD
ich sehe es nicht wo es beendet wird
mache das morgen ich kann das alles nicht mehr
okay 😄
was genau meinst
wenn du owner bist kann er dich nd bannen?
aber 2 Nachrichten?
ist das dir zu viel 🤔
ne zu wenig
ya
Weiß wer warum???
root@censored:~/jinxle_bot# pip freeze
aiocache==0.12.2
aiohttp==3.8.6
aiosignal==1.3.1
aiosqlite==0.19.0
async-timeout==4.0.3
attrs==20.3.0
blinker==1.4
certifi==2020.6.20
chardet==4.0.0
charset-normalizer==3.3.2
cloud-init==20.4.1
colorama==0.4.6
configobj==5.0.6
cryptography==3.3.2
dbus-python==1.2.16
distro-info==1.0
dnspython==2.4.2
easy-pil==0.3.2
ezcord==0.5.2
frozenlist==1.4.1
httplib2==0.18.1
idna==2.10
importlib-metadata==1.6.0
Jinja2==2.11.3
jsonpatch==1.25
jsonpointer==2.0
jsonschema==3.2.0
MarkupSafe==1.1.1
more-itertools==4.2.0
multidict==6.0.4
oauthlib==3.1.0
pillow==10.2.0
py-cord==2.4.1
pycurl==7.43.0.6
PyGObject==3.38.0
PyJWT==1.7.1
pymongo==4.6.1
pyrsistent==0.15.5
PySimpleSOAP==1.16.2
python-apt==2.2.1
python-debian==0.1.39
python-debianbts==3.1.0
python-dotenv==1.0.0
PyYAML==5.3.1
reportbug==7.10.3+deb11u1
requests==2.31.0
six==1.16.0
typing-extensions==4.9.0
unattended-upgrades==0.1
urllib3==1.26.5
yarl==1.9.4
zipp==1.0.0
root@censored:~/jinxle_bot# python jinxle.py
Traceback (most recent call last):
File "/root/jinxle_bot/jinxle.py", line 2, in <module>
import discord
ModuleNotFoundError: No module named 'discord'```
hm nicht unbedingt hab ein return reingemacht 🙂
@silk gulch
⚠️ Es sollte nur eine Discord Library installiert sein
py-cord==2.4.1
import discord```
⚠️ Schreibe **nur** die Package-Namen in deine Datei
```yml
importlib-metadata==1.6.0
import discord```
*Ich habe [diese Nachricht](#1019974414487535736 message) geprüft.*
@silk gulch statement
Schnall ich nicht, was damit gemeint sein soll...
mach import discord raus
Warum, wenn ich ja discord benötige?
py-cord reicht aus
discord ist nur der name von discord.py package
Lucky nh frage
ja
Jetzt meckert er wegen dotenv.
Traceback (most recent call last):
File "/root/jinxle_bot/jinxle.py", line 2, in <module>
from dotenv import load_dotenv
ModuleNotFoundError: No module named 'dotenv'
hast du es nicht installiert
SIehe oben mein pip freeze
wann date?

dann hast eben des falsche getan
ich blicke bei deinen packages eh nd durch
Was soll ich denn jetzt falsch getan haben? Es steht ja im pip freeze drin.
sind eig zu viele
Ich hab nur die nötigen installiert. Der Rest war wohl schon vorher so. Kann ich ja nix für.
Ist ja eig. auch Wurst. Geht ja in erster Linie darum, dass er noch immer meckert.
ja warte
# python --version
Python 3.12.1```
@empty plaza hast du eig des video geschaut https://www.youtube.com/watch?v=Oeeg11RF32g&t=9s
Mein Discord Server
► https://discord.gg/zfvbjTEzv6
Code auf Github ► https://github.com/tibue99/tutorial-bot
Discord Developer Portal ► https://discord.com/developers/applications
Pycord
Docs ► https://docs.pycord.dev/
Guide ► https://guide.pycord.dev/introduction/
Discord Server ► https://discord.gg/pycord
In diesem Video schauen wir uns d...
Auf was?
auf ein kommando
Okay?
ne und du?#
ja aber freitag
hmm also ich habe auch desselbe python-dotenv und bei mir gehts
Fängt ja schon bei import discord an. In PyCharm startet er ja auch ohne Probleme. Auf meinem Server jedoch nicht.
also auf mein server habe ich die auch nd in den requirements
krass
py-cord @ git+https://github.com/Pycord-Development/pycord@225671013386af036ffc6e03818e38f07c91359d
ezcord @ git+https://github.com/tibue99/ezcord
chat-exporter
psutil
chardet
easy_pil```
das habe ich nur in meiner requirement und des reicht eig völlig
er zeigt nicht wie man abricht
immer diese timos
also timo @solid ingot
Meine requirements.txt führt er ja nicht mal aus, wenn ich versuche den Bot zu starten..
error?
Keiner. Nur dass 'No module: discord'
ja benutzt du discord.py oder pycord
dann dürfte der nicht kommen wenn du discord aus deiner requirements hast
As i said, wenn ich den Bot starte, führt er die requirements.txt nicht mal aus, sondern versucht den Bot direkt zu starten.
dann hast du die nicht angegeben beim startup
Wie mach ich das?
Ich nutze kein Pterodactyl.
aua
Nix aua.
ja wenn man sich nicht mit den anderen auskennt schon 😅
Womit auskennen?
ja wenn du nd weißt wie du dein bot mit dem requirements startest
Dafür soll dieser Channel ja hilfreich sein, wurde mir gesagt.
Man kann ja aber nicht automatisch davon ausgehen, dass jeder hier Pterodactyl nutzt.
Muss ja auch außerhalb Pterodactyl möglich sein, den Bot mit der requirements.txt zu starten.
wie zu starten
kannst du eben nd du installierst die sachen und startets deine main?
du Ezcord rolle solltest es ja wissen
Hab ich.
#pip install requirements.txt
ERROR: Could not find a version that satisfies the requirement requirements.txt
ERROR: No matching distribution found for requirements.txt```
🤔
ging mal bei mir mies wierd
Weil die Rolle ja auch aussagt, dass man Profi ist.
😂
# pip install requirements
ERROR: Could not find a version that satisfies the requirement requirements
ERROR: No matching distribution found for requirements```
ne aber glaub du solltest schon mal ein bot gestartet haben?
Bis dato nur über Pterodactyl oder PyCharm selbst. Nun versuche ich es aber außerhalb Pterodactyl.
versuch
Es spielt keine Rolle ob ich es über PuTTY oder einem anderen Programm mache. Das Endergebnis bleibt das gleiche.
ja hast du denn die requirements.txt auch hochgeladen
# ls
api archive commands images jinxle.py language listener requirements.txt utils```
Das hat geklappt.
lüge
Jetzt muss nur noch der Bot starten.
du kannst es nicht wissen
ey wie kann man nochmal eine role hinzufügen z.b beim welcome system wenn jemand joined hab des vergessen geht doch mit oder ?
Member_role = 213141241)
await member.role.add(member_role)
ne
wie den xD
member.add_roles
oh da kommt mein javascript wieder raus
Member_role = 1198041528677970050
await member.add_roles(Member_role)
await channel.send(f" **{member.mention}** Willkommen auf dem **{member.guild.name}** Server ",embed=welcome_embed)
`
Der sagt das await member.add_roles nicht geht
docs
id=
hab doch die id hahaha
member_role ist meine id
suiiii
bro hast du downsyndrom? ```py
await member.add_roles(id=DEINEID)
einf rolle getten
Du lustiger
Traceback (most recent call last):
File "C:\Users\disco\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.10_qbz5n2kfra8p0\LocalCache\local-packages\Python310\site-packages\discord\client.py", line 399, in _run_event
await coro(*args, **kwargs)
File "c:\Users\disco\Desktop\Testbot\main.py", line 70, in on_member_join
await member.add_roles(id="1198041528677970050")
TypeError: Member.add_roles() got an unexpected keyword argument 'id'```
Was hat lucky gesagt du lustige
haha
Nice bin nit nur ein mädchen auf einmal
sei einfach leise du hast gesagt ich soll es so machen es funktoneirt nicht egal ich habs jetzt danke Lucky
hahaaha
Member_role = self.bot.get_role(1198041528677970050)
await member.add_roles(Member_role)
await channel.send(f" **{member.mention}** Willkommen auf dem **{member.guild.name}** Server ",embed=welcome_em)```
lucky sagt doch einf rolle getten
Ja ich hab gesagt ich hab es dank lucky
eig esse ich pringles 
ich hasse mein leben wieso ist python so schwer 😦
python ist einfach besser als js
hm
voll schwer man
hast du getrunken
viel spaß damit aue
Member_role = self.bot.get_role(1198041528677970050)
vencord.getip()
await member.add_roles(Member_role)
await channel.send(f" **{member.mention}** Willkommen auf dem **{member.guild.name}** Server ",embed=welcome_em)
siehst du
💀
dedos mich ruhig
😂
Ja lucky hab ich aber bekomme es immer noch nicht hin mit der role 😦
🤨
Member_role = bot.get_role(1198041528677970050)
await member.add_roles(Member_role)
await channel.send(f" **{member.mention}** Willkommen auf dem **{member.guild.name}** Server ",embed=welcome_embed)
🤨
Traceback (most recent call last):
File "C:\Users\disco\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.10_qbz5n2kfra8p0\LocalCache\local-packages\Python310\site-packages\discord\client.py", line 399, in _run_event
await coro(*args, **kwargs)
File "c:\Users\disco\Desktop\Testbot\main.py", line 70, in on_member_join
Member_role = bot.get_role(1198041528677970050)
AttributeError: 'Bot' object has no attribute 'get_role'
self.bot
es gibt kein self.bot
dann hast du was falsch gemacht
Sorry Des Weed Knallt 😄
zeig ganzen code
😂
du lustige
kann dir gerne mein token geben
😮
bro du kannst mir jetzt gleich ein blown willst du hilfe oder nicht?

ich kann da mit deinen 3 zeilen nichts anfangen also zeig code
@bot.event
async def on_member_join(member):
if member.guild.id != 940666230946291803:
return
channel = bot.get_channel(1164896361662140507)
welcome_embed =discord.Embed(
title="👋 | Willkommen",
description=f"Hey {member.mention} Willkommen Auf dem server. \n Hier kannst du dich verifitzieren #1164896339616870440\n Hier kannst du z.b Deine pings auswählen #1198058289901076602 "
)
Member_role = bot.get_role()
await member.add_roles(Member_role)
await channel.send(f" **{member.mention}** Willkommen auf dem **{member.guild.name}** Server ",embed=welcome_embed)
als mädchen hat man keine
cleane id
sieht aus wie ein bot token xD
@outer ibex
Ja doch hab ich aber Dieses Welcome Message Soll in main.py
ups 😄
ich glaub du kannst async def on_member_join(member, bot: discord.Bot):
drunter machst du dann noch
self.bot = bot
also das welcome system funktoniert an sich
aber der will die role nicht geben
Willkommen
class Reactionroles(ezcord.Cog, hidden=True):
@ezcord.Cog.listener()
async def on_member(self, member):
if member.guild.id != 940666230946291803:
return
channel = bot.get_channel(1164896361662140507)
welcome_embed =discord.Embed(
title="👋 | Willkommen",
description=f"Hey {member.mention} Willkommen Auf dem server. \n Hier kannst du dich verifitzieren #1164896339616870440\n Hier kannst du z.b Deine pings auswählen #1198058289901076602 "
)
Member_role = self.bot.get_role()
await member.add_roles(Member_role)
await channel.send(f" **{member.mention}** Willkommen auf dem **{member.guild.name}** Server ",embed=welcome_embed)```
So wird ganze zeit einer aus meiner klasse genannt
Was ist dein proplem du schwanz du sagst zu mir ich bin downy und was bist du den dan
Ja ich mich auch aue
sehe ich
besser so
Lucky Danke
jetzt viel spaß beim coden du downy nimm das nicht erst um die uhrzeit wird eh immer getrollt
Weiß nicht was dein proplem ist Ist doch dann mein proplem wenn lucky mir nicht mehr helfen will und nicht deins
lucky hat support verdient
import discord
import ezcord
class Reactionroles(ezcord.Cog, hidden=True):
@ezcord.Cog.listener()
async def on_member(self, member):
if member.guild.id != 940666230946291803:
return
channel = bot.get_channel(1164896361662140507)
welcome_embed =discord.Embed(
title="👋 | Willkommen",
description=f"Hey {member.mention} Willkommen Auf dem server. \n Hier kannst du dich verifitzieren #1164896339616870440\n Hier kannst du z.b Deine pings auswählen #1198058289901076602 "
)
Member_role = self.bot.get_role()
await member.add_roles(Member_role)
await channel.send(f" **{member.mention}** Willkommen auf dem **{member.guild.name}** Server ",embed=welcome_embed)
```
Geht immer noch nicht 😦
schau ob deine einrückung richtig ist
also eingerückt habe ich den code nicht nur so 😅
import discord
import ezcord
class Reactionroles(ezcord.Cog, hidden=True):
@ezcord.Cog.listener()
async def on_member(self, member):
if member.guild.id != 940666230946291803:
return
channel = self.bot.get_channel(1164896361662140507)
welcome_embed =discord.Embed(
title="👋 | Willkommen",
description=f"Hey {member.mention} Willkommen Auf dem server. \n Hier kannst du dich verifitzieren #1164896339616870440\n Hier kannst du z.b Deine pings auswählen #1198058289901076602 "
)
Member_role = self.bot.get_role()
await member.add_roles(Member_role)
await channel.send(f" **{member.mention}** Willkommen auf dem **{member.guild.name}** Server ",embed=welcome_embed)
def setup(bot: discord.Bot):
bot.add_cog(Reactionroles(bot))```
dankö schön ♥
also das ist aber in einem cog
ne jetzt startet der bot nit
Hab das in cog
viel spaß beim testen
muss ich da etwas ändern oder so geht immer noch nit 😄
er gibt die rolle nd?
Welcome Message wird auch nit mehr gesendet kommt kein error
intents.members = True
hab intents.all
das ding ist der sendet beim Bot der auf server gehostet ist ganze zeit Welcome Messages aber auf dem Test bot nix mehr
Hast auch im Developer Portal an?
Der bot hat es vor der änderung auch gesendet gehabt
Glaub ich habs
import discord
import ezcord
class Reactionroles(ezcord.Cog, hidden=True):
@ezcord.Cog.listener()
async def on_member_join(self, member):
if member.guild.id != 940666230946291803:
return
channel = self.bot.get_channel(1164896361662140507)
welcome_embed =discord.Embed(
title="👋 | Willkommen",
description=f"Hey {member.mention} Willkommen Auf dem server. \n Hier kannst du dich verifitzieren #1164896339616870440\n Hier kannst du z.b Deine pings auswählen #1198058289901076602 "
)
Member_role = self.bot.get_role("1198041528677970050")
await member.add_roles(Member_role)
await channel.send(f" **{member.mention}** Willkommen auf dem **{member.guild.name}** Server ",embed=welcome_embed)
def setup(bot: discord.Bot):
bot.add_cog(Reactionroles(bot))
Das er die role nicht geben könnte ist auch ausgeschlossen
get_role will doch sowieso keinen String haben
wie soll ich das jetzt verstehen?
Gib einfach zahlen an
Und get_role wahrscheinlich auf den guild und nicht bot
Bro du kannst js solltest du nicht wissen was ein String ist?
Doch Es funktoniert mit "ID" nicht und wenn ich nur ID mache geht es auch nit
Also Wenn ich aus dem Welcome Code await member.add_roles(1198041528677970050)
entferne Funktoniert Es
hab es jetzt auf die alte art gemacht und es funktoniert
danke euch trotzdem

@novel ore was muss allles für minigame in db sein ?
Welches willst du den machen?
TicTacTo
Eigendlich nichts
was sag ihr mit button oder mit eomji
Button
discord.errors.ExtensionFailed: Extension 'cogs.minigame.TicTacTo' raised an error: AttributeError: type object 'Button' has no attribute 'gray'```
@discord.ui.button(label="1", style=discord.ButtonStyle.gray, custom_id="1")```
Gibt es gray überhaupt? Denke du musst primary nutzen
naja es kommt über all
@discord.ui.button(label="9", style=discord.ButtonStyle.primary, custom_id="9")
async def button_callback_9(self, button, interaction):``` ```py
Traceback (most recent call last):
File "d:\Projects\cloud-bot\main.py", line 48, in <module>
bot.load_cogs("./cogs/minigame", subdirectories=True, custom_log_level="minigame")
File "C:\Users\nicor\AppData\Local\Programs\Python\Python311\Lib\site-packages\littxlecord\bot.py", line 315, in load_cogs
self.load_extension(cog)
File "C:\Users\nicor\AppData\Local\Programs\Python\Python311\Lib\site-packages\discord\cog.py", line 910, in load_extension
self._load_from_module_spec(spec, name)
File "C:\Users\nicor\AppData\Local\Programs\Python\Python311\Lib\site-packages\discord\cog.py", line 777, in _load_from_module_spec
raise errors.ExtensionFailed(key, e) from e
discord.errors.ExtensionFailed: Extension 'cogs.minigame.TicTacTo' raised an error: AttributeError: type object 'Button' has no attribute 'primary'```
ja gibt es, siehe markierter teil
Ich bekomm diesen Error und weiß nicht warum der kommt. Ich vermte das der noch in derfor schleife ist aber schon die näcshte for schleife gibt. Kann das sein?
welche nächste for schleife meinst du, ich sehe da nur eine. vielleicht ändert sich der self.counting wert während der for schleife
Wie soll sich das ändern?
ich weiß nicht was du genau im dict speicherst, aber vielleicht solltest du die dictionary struktur ändern
Hey Timo ich hab eine Frage wie kann man ein laufendes wait_for abbrechen wenn man auch ein Button drückt?
Ich habe seit gestern noch immer folgendes Problem:
Traceback (most recent call last):
File "/root/jinxle_bot/jinxle.py", line 2, in <module>
import discord
ModuleNotFoundError: No module named 'discord'```
Das ganze läuft nicht über Pterodactyl. Ich versuche ihn so zu starten.
#🔍・pycord-help auch schon befolgt.
pip freeze:
pip freeze
aiocache==0.12.2
aiohttp==3.8.6
aiosignal==1.3.1
aiosqlite==0.19.0
async-timeout==4.0.3
attrs==20.3.0
blinker==1.4
certifi==2020.6.20
chardet==4.0.0
charset-normalizer==3.3.2
cloud-init==20.4.1
colorama==0.4.6
configobj==5.0.6
cryptography==3.3.2
dbus-python==1.2.16
distro-info==1.0
dnspython==2.4.2
easy-pil==0.3.2
ezcord==0.5.2
frozenlist==1.4.1
httplib2==0.18.1
idna==2.10
importlib-metadata==1.6.0
Jinja2==2.11.3
jsonpatch==1.25
jsonpointer==2.0
jsonschema==3.2.0
MarkupSafe==1.1.1
more-itertools==4.2.0
multidict==6.0.4
oauthlib==3.1.0
pillow==10.2.0
py-cord==2.4.1
pycurl==7.43.0.6
PyGObject==3.38.0
PyJWT==1.7.1
pymongo==4.6.1
pyrsistent==0.15.5
PySimpleSOAP==1.16.2
python-apt==2.2.1
python-debian==0.1.39
python-debianbts==3.1.0
python-dotenv==1.0.0
PyYAML==5.3.1
reportbug==7.10.3+deb11u1
requests==2.31.0
six==1.16.0
typing-extensions==4.9.0
unattended-upgrades==0.1
urllib3==1.26.5
yarl==1.9.4
zipp==1.0.0```
ich speicher eine id also zahl und dahinter immer alle Nachrichten von Global Chat die die gleichen sind. Damit wenn ich eine lösche alle anderen auch gelsöcht werden
Versuch mal auch normal Discord dazu zu installieren
das solltest du vlt mit einer lokalen variable machen statt mit einer klassenvariable
die ist doch lokal da das dict in der config.py lieg
Sollte nicht daran liegen. Wenn ich beispielsweiße import discord entferne, dann meckert er wegen python-dotenv.
Irgendwas stimmt da nicht mit den requirements.
dann hast du die packages wahrscheinlich nicht für die python version installiert, die dein projekt benutzt. versuch es mal über die pycharm interpreter settings
Ich möchte es über meinen Server laufen lassen, nicht über PyCharm - da klappt alles wunderbar.
dann hast du vlt mehrere python versionen auf deinem server
Wie kann ich dies überprüfen?
welches betriebssystem hat dein server
Debian 11 Bullseye
hm da müsstest du selbst mal nachschauen
@solid ingot
Kylie janner
Also Python 3.12 ist auf jeden Fall drauf.
Aber anscheinend ist 3.9 auch installiert, aber habe die default Version auf 3.12 geändert. Eigentlich sollte es klappen, aber habe immer noch den selben Fehler.
dann hat das mit der default version wohl nicht geklappt
So eine Funktion gibt es glaube nicht, aber du kannst ja ne Bedingung einbauen.
Habe das hier befolgt und bekomme unten auch exakt den selben Output
hast du die packages denn auch für 3.12 installiert?
Wie geht das?
mit pip install nehme ich an. wenn du die packages aktuell für 3.9 installiert hast, bringt es dir ja nichts die default version auf 3.12 zu haben.
ile "C:\Users\nicor\AppData\Local\Programs\Python\Python311\Lib\site-packages\discord\client.py", line 378, in _run_event
await coro(*args, **kwargs)
File "d:\Projects\cloud-bot\cogs\minigame\TicTacTo.py", line 16, in on_ready
self.bot.add_view(TicTacToeView())
^^^^^^^^^^^^^^^
TypeError: TicTacToeView.__init__() missing 1 required positional argument: 'game_data'```
Über pip install hab ich sie ja bereits installed.
@commands.Cog.listener()
async def on_ready(self):
self.bot.add_view(TicTacToeView())```
aber da war 3.12 ja noch nicht die default version
Aber wenn ich jetzt pip freeze ausführe, stehen ja dennoch alle da.
Bro Quick fix deinstalliere alle deine Pythons die du hast und installiere Python neu ich benutze noch Python 11.5 funktioniert noch am besten
dann ist das wohl nicht die version, die du für deinen bot nutzt. versuch es mal mit py -3.12 -m pip oder pip3.12 oder sowas in die richtung
pip3.12 wird es sein, weil als ich eben pip3.12 freeze ausführen wollte, kam nichts zurück.
Ja daran liegt es.
Jetzt bekomme ich alles installiert, aber py-cord lässt sich nicht installieren, da bekomm ich nen Error.
error: command '/usr/bin/gcc' failed with exit code 1
[end of output]
note: This error originates from a subprocess, and is likely not a problem with pip.
ERROR: Failed building wheel for aiohttp
Failed to build aiohttp
ERROR: Could not build wheels for aiohttp, which is required to install pyproject.toml-based projects
wenn du pycord mit 3.12 nutzen möchtest, brauchst du die master branch version
Da muss man ja iwie nen Link angeben. Wie sieht der denn nochmal aus? xD
git+https://github.com/Pycord-Development/pycord
Ist das die master?
Also so?
pip3.12 install py-cord@git+https://github.com/Pycord-Development/pycord
@solid ingot jetzt startet er. Aber ist der Error ein Issue von ezcord, oder bin ich jetzt dumm?
# python3.12 jinxle.py
Traceback (most recent call last):
File "/root/jinxle_bot/jinxle.py", line 4, in <module>
import ezcord
File "/usr/local/lib/python3.12/site-packages/ezcord/__init__.py", line 6, in <module>
from . import blacklist, components, emb, logs, sql, times, utils
File "/usr/local/lib/python3.12/site-packages/ezcord/blacklist.py", line 13, in <module>
from .sql import DBHandler
File "/usr/local/lib/python3.12/site-packages/ezcord/sql.py", line 6, in <module>
import aiosqlite
File "/usr/local/lib/python3.12/site-packages/aiosqlite/__init__.py", line 6, in <module>
from sqlite3 import ( # pylint: disable=redefined-builtin
File "/usr/local/lib/python3.12/sqlite3/__init__.py", line 57, in <module>
from sqlite3.dbapi2 import *
File "/usr/local/lib/python3.12/sqlite3/dbapi2.py", line 27, in <module>
from _sqlite3 import *
ModuleNotFoundError: No module named '_sqlite3'
sqlite3 fehlt oder
pip3.12 install sqlite3
ERROR: Could not find a version that satisfies the requirement sqlite3 (from versions: none)
ERROR: No matching distribution found for sqlite3
Naja dann werde ich 3.11 draufklatschen. Nach Erfahrungsberichten von hier soll da alles noch glatt laufen.
Oki. Danke dir. 🙂
Ich versuche aktuell den Code aus #1027677692730036294 zu probieren:
Traceback (most recent call last):
File "C:\Users\Max\AppData\Local\Programs\Python\Python311\Lib\site-packages\discord\commands\core.py", line 124, in wrapped
ret = await coro(arg)
^^^^^^^^^^^^^^^
File "C:\Users\Max\AppData\Local\Programs\Python\Python311\Lib\site-packages\discord\commands\core.py", line 978, in _invoke
await self.callback(self.cog, ctx, **kwargs)
File "c:\Users\Max\Documents\Programmieren\Discord-Bots\Aktive Bots\Vysion\cogs\user\economy.py", line 129, in daily
current_streak = await db.get_streak(user_id)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "c:\Users\Max\Documents\Programmieren\Discord-Bots\Aktive Bots\Vysion\cogs\user\economy.py", line 52, in get_streak
await self.one("SELECT streak FROM users WHERE user_id = ?", user_id) or 0
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\Users\Max\AppData\Local\Programs\Python\Python311\Lib\site-packages\ezcord\sql.py", line 247, in one
raise e
File "C:\Users\Max\AppData\Local\Programs\Python\Python311\Lib\site-packages\ezcord\sql.py", line 243, in one
async with db.execute(sql, args) as cursor:
File "C:\Users\Max\AppData\Local\Programs\Python\Python311\Lib\site-packages\aiosqlite\context.py", line 39, in __aenter__
self._obj = await self._coro
^^^^^^^^^^^^^^^^
File "C:\Users\Max\AppData\Local\Programs\Python\Python311\Lib\site-packages\aiosqlite\core.py", line 190, in execute
cursor = await self._execute(self._conn.execute, sql, parameters)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\Users\Max\AppData\Local\Programs\Python\Python311\Lib\site-packages\aiosqlite\core.py", line 133, in _execute
return await future
^^^^^^^^^^^^
File "C:\Users\Max\AppData\Local\Programs\Python\Python311\Lib\site-packages\aiosqlite\core.py", line 106, in run
result = function()
^^^^^^^^^^
sqlite3.OperationalError: no such table: users
The above exception was the direct cause of the following exception:
Traceback (most recent call last):
File "C:\Users\Max\AppData\Local\Programs\Python\Python311\Lib\site-packages\discord\client.py", line 378, in _run_event
await coro(*args, **kwargs)
File "c:\Users\Max\Documents\Programmieren\Discord-Bots\Aktive Bots\Vysion\cogs\bot\error-handler.py", line 40, in on_application_command_error
raise error
File "C:\Users\Max\AppData\Local\Programs\Python\Python311\Lib\site-packages\discord\bot.py", line 1114, in invoke_application_command
await ctx.command.invoke(ctx)
File "C:\Users\Max\AppData\Local\Programs\Python\Python311\Lib\site-packages\discord\commands\core.py", line 375, in invoke
await injected(ctx)
File "C:\Users\Max\AppData\Local\Programs\Python\Python311\Lib\site-packages\discord\commands\core.py", line 124, in wrapped
ret = await coro(arg)
^^^^^^^^^^^^^^^
File "C:\Users\Max\AppData\Local\Programs\Python\Python311\Lib\site-packages\discord\commands\core.py", line 1312, in _invoke
await command.invoke(ctx)
File "C:\Users\Max\AppData\Local\Programs\Python\Python311\Lib\site-packages\discord\commands\core.py", line 375, in invoke
await injected(ctx)
File "C:\Users\Max\AppData\Local\Programs\Python\Python311\Lib\site-packages\discord\commands\core.py", line 132, in wrapped
raise ApplicationCommandInvokeError(exc) from exc
discord.errors.ApplicationCommandInvokeError: Application Command raised an exception: OperationalError: no such table: users
ist mein code
test mal dem aus @tough thicket
halt littxlecord zu ezcord machen @tough thicket
danke dir 😄
bitte das war ja auch mein code
xD
[ERROR] Error while executing /tictactoe
Traceback (most recent call last):
File "C:\Users\nicor\AppData\Local\Programs\Python\Python311\Lib\site-packages\discord\commands\core.py", line 124, in wrapped
ret = await coro(arg)
^^^^^^^^^^^^^^^
File "C:\Users\nicor\AppData\Local\Programs\Python\Python311\Lib\site-packages\discord\commands\core.py", line 978, in _invoke
await self.callback(self.cog, ctx, **kwargs)
File "d:\Projects\cloud-bot\cogs\minigame\TicTacTo.py", line 57, in tictactoe
if ctx.author.id == member.id:
^^^^^^^^^
AttributeError: 'str' object has no attribute 'id'```
async def tictactoe(self, ctx, member: discord.Member):
if ctx.author.id == member.id:
return await ctx.respond("You cannot play against yourself!")
if (ctx.author.id, member.id) in self.games or (member.id, ctx.author.id) in self.games:
return await ctx.respond("There is already a game in progress between you two!")
board = self.create_board()
self.games[(ctx.author.id, member.id)] = {"board": board, "turn": ctx.author, "member": member}
await ctx.respond(
f"{member.mention}, {ctx.author.mention} has challenged you to a game of Tic-Tac-Toe!\n"
f"{ctx.author.mention}, it's your turn.\n\n{self.display_board(board)}",
view=TicTacToeView()(self.games[(ctx.author.id, member.id)])
)```
hover mal mit der maus drüber dann siehst du es
ctx.guild.id``` und nicht member.guld.id
Wo soll der member her kommen
member ist nicht defind
Ich habe im moment ein problem, und zwar habe ich ein log system für die commands das wenn ein slash command ausgeführt wird in einen channel der command gesendet wird. das hat auch immer gut geklappt nur auf einmal funktioniert es jetzt nicht mehr. ich denke das hat etwas mit @discord.default_permissions() zu tun da damit auch ein fehler kommt schon beim starten des bots. alle fehler schicke ich noch.
Ignoring exception in on_application_command
Traceback (most recent call last):
File "C:\Users\User\AppData\Local\Programs\Python\Python311\Lib\site-packages\discord\client.py", line 378, in _run_event
await coro(*args, **kwargs)
File "C:\Users\User\PycharmProjects\neuprojekt\main.py", line 47, in on_application_command
await log(ctx.guild, ctx.author, f"</{ctx.command.qualified_name}:{ctx.command.qualified_id}>")
^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\Users\User\AppData\Local\Programs\Python\Python311\Lib\site-packages\discord\commands\core.py", line 593, in qualified_id
return self.parent.qualified_id
^^^^^^^^^^^^^^^^^^^^^^^^
AttributeError: 'NoneType' object has no attribute 'qualified_id'
``` Das ist der Fehler den mein log system macht
Ignoring exception in on_connect
Traceback (most recent call last):
File "C:\Users\User\AppData\Local\Programs\Python\Python311\Lib\site-packages\discord\client.py", line 378, in _run_event
await coro(*args, **kwargs)
File "C:\Users\User\AppData\Local\Programs\Python\Python311\Lib\site-packages\discord\bot.py", line 1164, in on_connect
await self.sync_commands()
File "C:\Users\User\AppData\Local\Programs\Python\Python311\Lib\site-packages\discord\bot.py", line 719, in sync_commands
registered_commands = await self.register_commands(
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\Users\User\AppData\Local\Programs\Python\Python311\Lib\site-packages\discord\bot.py", line 588, in register_commands
data = [cmd["command"].to_dict() for cmd in filtered_deleted]
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\Users\User\AppData\Local\Programs\Python\Python311\Lib\site-packages\discord\bot.py", line 588, in <listcomp>
data = [cmd["command"].to_dict() for cmd in filtered_deleted]
^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\Users\User\AppData\Local\Programs\Python\Python311\Lib\site-packages\discord\commands\core.py", line 1183, in to_dict
] = self.default_member_permissions.value
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
AttributeError: 'flag_value' object has no attribute 'value'
``` das ist der fehler der beim starten des bots kommt
das muss etwas mit meinem code zutun haben da @discord.default_permissions() in anderen projekten von mir funktioniert
wir haben ohne code nicht weit
allen code? weil ist recht viel
Naja schon bei der Stelle, wo der Error auftritt.
Vielleicht das wo der fehler ||vermutlich|| auftritt
das ist ja das problem der 2. fehler den ich gesendet habe gibt es keine code stelle und ich vermute das wegen dem 2. fehler der erste kommt
@bot.event
async def on_application_command(ctx):
await log(ctx.guild, ctx.author, f"</{ctx.command.qualified_name}:{ctx.command.qualified_id}>")
``` Das ist der teil der im error gezeigt wird
```py
async def log(guild, user, command):
data = await get_ids()
channel = guild.get_channel(int(data["guild"]["log"]))
embed = discord.Embed(
title='Command Ausgeführt',
description=f'{user.mention} hat den command {command} ausgeführt',
color=discord.Color.danger_red()
)
embed.timestamp = datetime.datetime.utcnow()
await channel.send(embed=embed)
```das ist die log function
Naja, API-abhängig.
Sind beides Fehler, weil ein Object kein attribute besitzt.
ctx.command.qualified_id
^^^^^^^^^^^
das habe ich schon verstanden das problem ist halt warum der fehler auftritt
ich habe diesen code schon lange benutzt und der hat immer funktioniert
nur jetzt gibt es probleme
Möglicherweiße war der Code damals deprecated. Zumindest sagt er dir ja im Error, dass das Attribut nicht existiert.
Belese dich mal in den Docs am besten.
Py-Cord nutzt du bestimmt?
ja
The following section outlines the API of Pycord’s prefixed command extension module. Bots: Bot: Attributes activity, allowed_mentions, application_flags, application_id, cached_messages, case_inse...
wenn es ein pycord update gab muss ich das dann extra installieren oder passiert das automatisch?
Musst du updaten. Aber wirst du ja bestimmt schon.
ok weil ich hab die version nicht geupdatet und in der version in der ich das gecodet habe (die die ich immernoch benutze) hat es geklappt
hm anscheinend gibt es das nicht mehr oder so
Aktuiell gibt es nur qualified_name als gültiges Attribut.
Immer wieder gerne.
#1191544856246501418
Kannst auch meinen Code als Hilfe oder komplett nehmen
ist glaube ich nicht genau was ich suche aber danke.
Was dann?
ich möchte den command auch mentionen also pingen das habe ich halt mit diesem </commandname:commandid> versucht
das ist die falsche docs seite. ich habe mich bei den on_application_command durchegclickt um halt zum ApplicationCommand doc page zu kommen. da gibt es diese attribute dann
ctx.command.mention?
ich versuche es mal
Die Id ändert sich aber nach ner weile dann geht der mention nicht mehr
ich hab sowas halt in den docs nicht gefunden deswegen habe ich es anders gemacht
Ah ne gibts nicht
[COGS] Loaded 2 cogs
Traceback (most recent call last):
File "C:\Users\vison\Downloads\Infinity Bot\.venv\lib\site-packages\discord\cog.py", line 786, in _load_from_module_spec
setup(self)
File "C:\Users\vison\downloads\Infinity Bot\cogs\admin\Self-rules.py", line 54, in setup
bot.add_cog(Profile(bot))
File "C:\Users\vison\Downloads\Infinity Bot\.venv\lib\site-packages\discord\cog.py", line 656, in add_cog
cog = cog._inject(self)
File "C:\Users\vison\Downloads\Infinity Bot\.venv\lib\site-packages\discord\cog.py", line 567, in _inject
raise e
File "C:\Users\vison\Downloads\Infinity Bot\.venv\lib\site-packages\discord\cog.py", line 561, in _inject
bot.add_command(command)
AttributeError: 'Bot' object has no attribute 'add_command'. Did you mean: 'all_commands'?
The above exception was the direct cause of the following exception:
Traceback (most recent call last):
File "C:\Users\vison\downloads\Infinity Bot\main.py", line 26, in <module>
bot.load_cogs(
File "C:\Users\vison\Downloads\Infinity Bot\.venv\lib\site-packages\ezcord\bot.py", line 315, in load_cogs
self.load_extension(cog)
File "C:\Users\vison\Downloads\Infinity Bot\.venv\lib\site-packages\discord\cog.py", line 910, in load_extension
self._load_from_module_spec(spec, name)
File "C:\Users\vison\Downloads\Infinity Bot\.venv\lib\site-packages\discord\cog.py", line 791, in _load_from_module_spec
raise errors.ExtensionFailed(key, e) from e
discord.errors.ExtensionFailed: Extension 'cogs.admin.Self-rules' raised an error: AttributeError: 'Bot' object has no attribute 'add_command'
Process finished with exit code 1
import discord
from discord.ext import commands
class Profile(commands.Cog):
def __init__(self, bot):
self.bot = bot
@commands.Cog.listener()
async def on_ready(self):
self.bot.add_view(ButtonSelect())
@commands.command(description="🚫 × Nur für Admins!")
@commands.has_permissions(administrator=True)
async def selfroles(self, ctx, channel: discord.TextChannel):
await ctx.defer()
embed = discord.Embed(
title="**Wenn ihr die Rollen haben wollt von Youtube/Twitch dann Klickt unten auf die Knöpfe für die Rollen die ihr haben wollt.**",
color=discord.Color.green()
)
await channel.send(embed=embed, view=ButtonSelect())
await ctx.respond(f"Die Rules wurden in {channel.mention} geschickt")
class ButtonSelect(discord.ui.View):
def __init__(self):
super().__init__(timeout=None)
@discord.ui.button(
label="Twitch",
style=discord.ButtonStyle.blurple,
custom_id="1161974614759592019"
)
async def button_callback1(self, button, interaction):
role = interaction.guild.get_role(1161974614759592019) # Hier Role ID einfügen
await interaction.author.add_roles(role)
await interaction.response.send_message("Du hast die Rolle bekommen", ephemeral=True)
@discord.ui.button(
label="YouTube",
style=discord.ButtonStyle.red,
custom_id="1161974614759592017"
)
async def button_callback2(self, button, interaction):
role = interaction.guild.get_role(1161974614759592017) # Hier Role ID einfügen
await interaction.author.add_roles(role)
await interaction.response.send_message("Du hast die Rolle bekommen", ephemeral=True)
def setup(bot):
bot.add_cog(Profile(bot))``` Hier Auch der Code
@slash_command``` und nicht @commands.command
[COGS] Loaded 2 cogs
Traceback (most recent call last):
File "C:\Users\vison\Downloads\Infinity Bot\.venv\lib\site-packages\discord\cog.py", line 774, in _load_from_module_spec
spec.loader.exec_module(lib) # type: ignore
File "<frozen importlib._bootstrap_external>", line 883, in exec_module
File "<frozen importlib._bootstrap>", line 241, in _call_with_frames_removed
File "C:\Users\vison\downloads\Infinity Bot\cogs\admin\Self-rules.py", line 6, in <module>
class Profile(commands.Cog):
File "C:\Users\vison\downloads\Infinity Bot\cogs\admin\Self-rules.py", line 14, in Profile
@slash_command(description="🚫 × Nur für Admins!")
NameError: name 'slash_command' is not defined
The above exception was the direct cause of the following exception:
Traceback (most recent call last):
File "C:\Users\vison\downloads\Infinity Bot\main.py", line 26, in <module>
bot.load_cogs(
File "C:\Users\vison\Downloads\Infinity Bot\.venv\lib\site-packages\ezcord\bot.py", line 315, in load_cogs
self.load_extension(cog)
File "C:\Users\vison\Downloads\Infinity Bot\.venv\lib\site-packages\discord\cog.py", line 910, in load_extension
self._load_from_module_spec(spec, name)
File "C:\Users\vison\Downloads\Infinity Bot\.venv\lib\site-packages\discord\cog.py", line 777, in _load_from_module_spec
raise errors.ExtensionFailed(key, e) from e
discord.errors.ExtensionFailed: Extension 'cogs.admin.Self-rules' raised an error: NameError: name 'slash_command' is not defined
Process finished with exit code 1
habe schon
from discord.commands import slash_command``` @misty narwhal
hab schon
from datetime import datetime
import discord
from discord.ext import commands
from discord.commands import slash_command
class Profile(commands.Cog):
def __init__(self, bot):
self.bot = bot
@commands.Cog.listener()
async def on_ready(self):
self.bot.add_view(ButtonSelect())
@slash_command(description="🚫 × Nur für Admins!")
@commands.has_permissions(administrator=True)
async def selfroles(self, ctx, channel: discord.TextChannel):
await ctx.defer()
embed = discord.Embed(
title="**Wenn ihr die Rollen haben wollt von Youtube/Twitch dann Klickt unten auf die Knöpfe für die Rollen die ihr haben wollt.**",
color=discord.Color.green()
)
await channel.send(embed=embed, view=ButtonSelect())
await ctx.respond(f"Die Rules wurden in {channel.mention} geschickt")
class ButtonSelect(discord.ui.View):
def __init__(self):
super().__init__(timeout=None)
@discord.ui.button(
label="Twitch",
style=discord.ButtonStyle.blurple,
custom_id="1161974614759592019"
)
async def button_callback1(self, button, interaction):
role = interaction.guild.get_role(1161974614759592019) # Hier Role ID einfügen
await interaction.author.add_roles(role)
await interaction.response.send_message("Du hast die Rolle bekommen", ephemeral=True)
@discord.ui.button(
label="YouTube",
style=discord.ButtonStyle.red,
custom_id="1161974614759592017"
)
async def button_callback2(self, button, interaction):
role = interaction.guild.get_role(1161974614759592017) # Hier Role ID einfügen
await interaction.author.add_roles(role)
await interaction.response.send_message("Du hast die Rolle bekommen", ephemeral=True)
def setup(bot):
bot.add_cog(Profile(bot))```
Welche Python Version nutzt du?
3.11.6
Da steht das Python 3.12 gewählt ist.
Aber py-cord geht noch nicht mit 3.12
Du benutzt 312 ja
Ich?
Nö
Achso weil sieht so aus als ob du auf mich damit geantwotet hast
[COGS] Loaded 1 cog
Traceback (most recent call last):
File "C:\Users\vison\Downloads\Famex Bot\.venv\lib\site-packages\discord\http.py", line 418, in static_login
data = await self.request(Route("GET", "/users/@me"))
File "C:\Users\vison\Downloads\Famex Bot\.venv\lib\site-packages\discord\http.py", line 371, in request
raise HTTPException(response, data)
discord.errors.HTTPException: 401 Unauthorized (error code: 0): 401: Unauthorized
The above exception was the direct cause of the following exception:
Traceback (most recent call last):
File "C:\Users\vison\Downloads\Famex Bot\Famex.py", line 29, in <module>
bot.run(os.getenv("TOKEN"))
File "C:\Users\vison\Downloads\Famex Bot\.venv\lib\site-packages\ezcord\bot.py", line 831, in run
super().run(token, **kwargs)
File "C:\Users\vison\Downloads\Famex Bot\.venv\lib\site-packages\discord\client.py", line 717, in run
return future.result()
File "C:\Users\vison\Downloads\Famex Bot\.venv\lib\site-packages\discord\client.py", line 696, in runner
await self.start(*args, **kwargs)
File "C:\Users\vison\Downloads\Famex Bot\.venv\lib\site-packages\ezcord\bot.py", line 857, in start
await super().start(token, **kwargs)
File "C:\Users\vison\Downloads\Famex Bot\.venv\lib\site-packages\discord\client.py", line 659, in start
await self.login(token)
File "C:\Users\vison\Downloads\Famex Bot\.venv\lib\site-packages\discord\client.py", line 515, in login
data = await self.http.static_login(token.strip())
@ruby sparrow
frage warum ping du
weil ich deine hilfe brauche
File "C:\Users\vison\Downloads\Famex Bot\.venv\lib\site-packages\discord\commands\core.py", line 124, in wrapped
ret = await coro(arg)
File "C:\Users\vison\Downloads\Famex Bot\.venv\lib\site-packages\discord\commands\core.py", line 978, in _invoke
await self.callback(self.cog, ctx, **kwargs)
File "C:\Users\vison\Downloads\Famex Bot\cogs\admin\embed.py", line 13, in embed
modal = Modal(bot=self.bot, title="Erstelle ein Embed"),
TypeError: Modal.__init__() got an unexpected keyword argument 'title'
beim response
????
.
File "C:\Users\vison\Downloads\Famex Bot\.venv\lib\site-packages\discord\cog.py", line 774, in _load_from_module_spec
spec.loader.exec_module(lib) # type: ignore
File "<frozen importlib._bootstrap_external>", line 879, in exec_module
File "<frozen importlib._bootstrap_external>", line 1017, in get_code
File "<frozen importlib._bootstrap_external>", line 947, in source_to_code
File "<frozen importlib._bootstrap>", line 241, in _call_with_frames_removed
File "C:\Users\vison\Downloads\Famex Bot\cogs\admin\embed.py", line 70
await interaction.response.send_modal(f"Embed erfolgreich in {channel.mention} erstellt und gesendet!, ephemeral=True)
^
SyntaxError: unterminated string literal (detected at line 70)
The above exception was the direct cause of the following exception:
Traceback (most recent call last):
File "C:\Users\vison\Downloads\Famex Bot\Famex.py", line 17, in <module>
bot.load_cogs(
File "C:\Users\vison\Downloads\Famex Bot\.venv\lib\site-packages\ezcord\bot.py", line 315, in load_cogs
self.load_extension(cog)
File "C:\Users\vison\Downloads\Famex Bot\.venv\lib\site-packages\discord\cog.py", line 910, in load_extension
self._load_from_module_spec(spec, name)
File "C:\Users\vison\Downloads\Famex Bot\.venv\lib\site-packages\discord\cog.py", line 777, in _load_from_module_spec
raise errors.ExtensionFailed(key, e) from e
discord.errors.ExtensionFailed: Extension 'cogs.admin.embed' raised an error: SyntaxError: unterminated string literal (detected at line 70) (embed.py, line 70)```
...
du musst da auch dein modal senden xD
du hast es komplett falsch gemacht
await interaction.response.send_message(Modal(title=f"Embed erfolgreich in {channel.mention} erstellt und gesendet!" ephemeral=True))```
Hab schon
ok
await interaction.response.send_modal(f"Embed erfolgreich in {channel.mention} erstellt und gesendet!", ephemeral=True)
in der language datei
Danke
wie decode ich den emoji dann?
gibt es bestimmte websiten dafür´?
kannst einfach copy paste von dc
achso
2 Acc
vs main acc hat das irgendein bestimmten grund?
das bei mir mehr angezeigt wird als bei mein 2 account
wie meinst du=
Auf meinem Haupt-Account werden in der Kategorie mehr Buttons angezeigt als auf meinem Zweit-Account, wie du auf den Screenshots sehen kannst. Kann ich das ändern?
Kann mir kurz jemand erklären was raise asyncio.CancelledError genau bringt heißt das man bringt einen error hervor?
kommt ja auf deinen code an
wie es kommt auf mein code an
Ich habe ein Erorr das die setup Funktion nicht gefunden wird wie kann das sein?
zeig dein def setup
du kannst permission_check auf False setzen
aktuell wird automatisch geprüft ob man auch berechtigung hat, die commands auszuführen
Stimmt, hab’s vergessen aber der andere Fehler geht nd weg
Ich hab nichtmal eine Zeile 780?
das ist die lib nicht dein code
Oke, was mach ich jz?
was geht denn jetzt nicht?
Ich will mein Bot starten und der Erorr kommt
Ich hab mein Setup grad hinzugefügt
schick mir ein bild
wäre es richtig hättest du kein error
schick ganzen code
import json
import os
import random
import discord
from discord.ext import commands
class Welcome(commands.Cog):
def __init__(self, bot):
self.bot: commands.Bot = bot
self.file_path = 'data.json'
self.default_data = {
'channel_id': 123,
'messages': [
'Willkommen {member}!',
'{member.mention} ist beigetreten'
]
}
if not os.path.exists(self.file_path):
with open(self.file_path, 'w') as f:
json.dump(self.default_data, f, indent=4)
self.data = self.default_data
print(f'Created {self.file_path!r}')
else:
with open(self.file_path, 'r') as f:
self.data = json.load(f)
@commands.Cog.listener()
async def on_member_join(self, member: discord.Member):
channel_id = self.data['channel_id']
channel = self.bot.get_channel(channel_id)
messages = self.data['messages']
message: str = random.choice(messages)
message = message.format(member=member)
await channel.send(message)
@commands.command()
async def test_join(self, ctx):
"""Führt das on_member_join event zum testen aus."""
self.bot.dispatch('member_join', ctx.author)
Hey kann mir einer Erkläre wie man ein Command erstellt wo man was auswählen kann und dann Die Nachricht Per DM bekommt
Ping mich einfach
@empty plaza (entschuldigung für den Ping aber ich verzweifel mit meinem Erorr)
Du willst doch nur eine zufällige willkommens nachricht und eine autorole oder?
ne mehrere
Das meine ich
dann ja
Also du brauchst natürlich erstmal einen slash command. Um dann eine auswahl zu machen kannst du wenn du eine eigene auswahl mit einer liste machst glaube ich options = [option1, option2, option3] (bin mir dabei aber nicht sicher) und wenn du eine z.B. Member auswahl machen möchtest dann würde ich Option benutzen. das funktioniert indem man erstmal Option importiert mit from discord.command import Option glaube ich. Dann um es zu benutzen macht man Optionen= Option(discord.Member, “Wähle einen Member aus”). Beim discord.Member gibst du an was ausgewählt werden soll. Man kann auch str oder int angeben um eine optionen bestimmten datentypes zu erzwingen. Beim “Wähle einen Member aus” kann man eine Beschreibung dazutun. Zu der Option. Ich hoffe damit ist das mit der Option geklärt. Dann einem User eine dm zu schreiben ist ganz einfach. Du brauchst ein User object und schreibst dem user dann mit await user.send(“Nachricht”). Das kann man natürlich dann gut mit der eben erklärten Member auswahl mit Option verbinden um halt das Member object zu bekommen. Ich hoffe damit ist alles erklärt. Ich prüfe später nochmal nach was ich hier gesagt habe da ich gerade alles aus dem Kopf mache und nicht nachgeguckt habe. Ich hoffe aber das ich alles soweit richtig gesagt habe
Kann ich einer Option in einem Slashcommand, auch eine beschreibung hinzufügen? Immer wenn ich dann description="Ananas" Schreibe, denkt
das es eine Option wäre. Die Datei ist in einem Cog drinnen.
@slash_command(description="Lass den Bot eine Nachricht senden")
async def send_message(self , ctx,
text: str,
channel:discord.TextChannel = None,
):
if channel is None:
channel = ctx.channel
await channel.send(text)
await ctx.respond("Gesendet!", ephemeral=True)
ja
channel: Option(discord.TextChannel, "Gib hier einen Kanal an.")
from discord.commands import slash_command, Option
jetzt ist bei self diese Klammer Rot unterstrichen und es kommt ein error code:
@slash_command(description="Lass den Bot eine Nachricht senden")
async def send_message(self , ctx,
text: str,
channel:discord.TextChannel = None "Gib hier denn Channel an",
):
if channel is None:
channel = ctx.channel
await channel.send(text)
await ctx.respond("Gesendet!", ephemeral=True)
@tawdry leaf was wäre besser einen Button Handler zu machen oder für jeden button ein callback machen und den ganzen coden dann auch noch in die datei?
@empty plaza du hast mein Bot eing gekickt 😐
ehm zu deiner Frage auf was ist das bezogen
😐
allgemein was besser wäre
alle buttons die du brauchst dann auch in dieser Datei zu callbacken
der arme pipi server
also ich habe die buttons in der datei bei der ich die brauche
also kein handler
HAHAHHAH
okok danke
@tawdry leaf ich hab eine gute Lösung gefunden mit meinem abbrechen
Fixed Version
from datetime import datetime
import discord
from discord.ext import commands
from discord.commands import slash_command
import ezcord
class Profile(ezcord.Cog):
def __init__(self, bot):
self.bot = bot
@commands.Cog.listener()
async def on_ready(self):
self.bot.add_view(ButtonSelect())
@slash_command(description="🚫 × Nur für Admins!")
@commands.has_permissions(administrator=True)
async def selfroles(self, ctx, channel: discord.TextChannel):
await ctx.defer()
embed = discord.Embed(
title="**Wenn ihr die Rollen haben wollt von Youtube/Twitch dann Klickt unten auf die Knöpfe für die Rollen die ihr haben wollt.**",
color=discord.Color.green()
)
await channel.send(embed=embed, view=ButtonSelect())
await ctx.respond(f"Die Rules wurden in {channel.mention} geschickt")
class ButtonSelect(discord.ui.View):
def __init__(self):
super().__init__(timeout=None)
@discord.ui.button(
label="Twitch",
style=discord.ButtonStyle.blurple,
custom_id="Twitch"
)
async def button_callback1(self, button, interaction):
role = interaction.guild.get_role(1198041569471758336) # Hier Role ID einfügen
user = interaction.user
await user.add_roles(role)
await interaction.response.send_message("Du hast die Rolle bekommen", ephemeral=True)
def setup(bot):
bot.add_cog(Profile(bot))
Ich bedenke Das Der 2 Account keine admin rechte hat
Pingt mich ruhig
from datetime import datetime
import discord
from discord.ext import commands
from discord.commands import slash_command
import ezcord
class Gechlecht(ezcord.Cog,emoji=":moderator:",group="Moderation"):
def __init__(self, bot):
self.bot = bot
@commands.Cog.listener()
async def on_ready(self):
self.bot.add_view(ButtonSelect())
@slash_command(description="Setzt Die self-role/gender!")
@commands.has_permissions(administrator=True)
async def gender(self, ctx, channel: discord.TextChannel):
await ctx.defer()
embed = discord.Embed(
title="Geschlecht",
description="test",
color=discord.Color.green()
)
embed.set_footer(text="Drücke auf einen der Buttons")
await channel.send(embed=embed, view=ButtonSelect())
await ctx.respond(f"Die Self Roles worden in {channel.mention} geschickt")
class ButtonSelect(discord.ui.View):
def __init__(self):
super().__init__(timeout=None)
@discord.ui.button(
label="Mann",
style=discord.ButtonStyle.success,
custom_id="Mann",
)
async def button_callback1(self, button, interaction):
role = interaction.guild.get_role(1198472519133433936) # Hier Role ID einfügen
user = interaction.user
await user.add_roles(role)
await interaction.response.send_message("Du hast die <@!{role}> Rolle bekommen", ephemeral=True)
def setup(bot):
bot.add_cog(Gechlecht(bot))
{role.mention}
Ich wurde vergessen 🙂
Hast du dir überhaupt mal python tutorials angeguckt?
ne glube nicht
Denke ich auch
Ja?
Mein Discord Server
► https://discord.gg/zfvbjTEzv6
Code auf Github
► https://github.com/tibue99/tutorial-bot
Tutorial Playlist
► https://youtube.com/playlist?list=PLwRWzD1Sw5lXZApchxorxeBQ_P_Fjdsj1
Discord Developer Portal
► https://discord.com/developers/applications
Pycord
Docs ► https://docs.pycord.dev/
Guide ► https://guide.pycord.dev/i...
Ich kenn den aber trotzdem komm ich nicht drauf
Was willst du denn machen?
In meinem Code? Ein Willkommenssystem
und dein error???
Versteh ich selbst nd

Liegt vermutlich daran dass keine prefix command mehr unterstützt werden, wie hast du bot definiert in der Main?
@blissful ember
Und in dem Screenshot heißt deine Klasse anders als du sie dann in der Setup Funktion aufrufst ^^
Nein?
Achso ja weil ich immer in der Main mein Bot starte
Setup muss vor die view class
Naja in dem Screen von oben definierst du die Klasse als Welcome und rufst sie mit Willkommen in der Setup auf?
Die nutzt er noch gar nicht in dem Teil den er geschickt hat meine ich 😅
Das hab ich gestern geändert danach kommt trotzdem das gleiche
...
Hier findest du das Main-Datei Template 🦕
So
Kannst du mal testweise discord.Bot durch commands.Bot ersetzen?
Und das entsprechend Importen?
So ging's zumachen früher bei mir wenn ich prefix cmds nutzen wollte
Ansonsten welche lib nimmst du denn?
Von Timos Video ka 😅
Das Problem liegt aber an meiner willkommmensdatei nicht an meiner Main?
Muss nicht sein
Seid ich die habe funktioniert Nix
...
debug_guilds rausnehmen?
Why?
Meine Main ```import discord
import os
from dotenv import load_dotenv
intents = discord.Intents.all()
status = discord.Status.dnd
activity = discord.Activity(type=discord.ActivityType.playing, name="Pycharm")
bot = discord.Bot(intents=intents, status=status, activity=activity, debug_guilds=[1195436272362201248
])
@bot.event
async def on_ready():
print(f"{bot.user} ist online")
class status(commands.Cog):
def init(self, bot):
self.bot = bot # Das muss in jeden Cog
def setup(bot):
bot.add_cog(status(bot))
if name == "main":
for f in os.listdir("cogs"):
if f.endswith(".py"):
bot.load_extension(f"cogs.{f[:-3]}")
load_dotenv()
bot.run(os.getenv("TOKEN"))```
Da stehen ja debug_guilds
Beim Bot
Warum soll das raus?
ich machs mal kurz
Jetzt das
@urban glen es wird immer schlimmer mit den Erorrs
Hast du mehrere cogs?
Kennt sich wer aus mit Multi Languages? Also per Slash Command eine andere Bot-Sprache einstellen
Ja 2
Nenn den Willkommens cog mal in willkommen.pys oder so
Also änder das .py damit der nicht mehr geladen wird und guck ob’s an dem cog liegt
Aber es muss immer .py sonst ist die Datei ungültig
die wird ungültig
Junge wie soll die ungültig werden
Wenn kein .py wird die ungültig weil man in Python immer .py haben muss

Alter es geht doch darum dass du die Datei nicht benutzt
ZUM TESTEN
Das soll kein dauerhaftes Ding sein
Du kannst die danach wieder umbenennen
Ohne die Datei geht’s
Yes.
Kannst du mir erklären, wie man dort anfängt? Angenommen in einem Base Command von den Tutorials
Wie sehr kennst Du dich denn schon aus?
joa, würde sagen ganz gut, wenn ich was nicht weiß, wird eben gegoogelt bis es klappt 
class UserHinzufuegenModal(discord.ui.Modal):
def __init__(self, *args, **kwargs):
super().__init__(
discord.ui.InputText(
label="USER ID",
placeholder="Schreibe die User ID hier rein",
min_length=18,
max_length=18,
),
*args,
**kwargs
)
async def callback(self, interaction):
user_id = self.children[0].value
try:
user_id = int(user_id)
except ValueError:
ungueltige_id_embed = discord.Embed(
title="Ungültige User ID",
description=f"Bitte gib eine gültige numerische ID ein",
color=discord.Color.red()
)
await interaction.response.send_message(embed=ungueltige_id_embed, ephemeral=True)
return
user = interaction.guild.get_member(user_id)
if not user:
user_id_embed = discord.Embed(
title="User nicht Gefunden",
description=f"Die angegebene User ID wurde nicht gefunden oder gibt es nicht",
color=discord.Color.red()
)
await interaction.response.send_message(embed=user_id_embed, ephemeral=True)
return
text_channel = interaction.channel
overwrites = text_channel.overwrites
for target, overwrite in overwrites.items():
if isinstance(target, discord.Member) and target == user:
users_id_ist_im_ticket = discord.Embed(
title="User ist bereits im Ticket",
description=f"Der User {user.mention} ist bereits im Ticket.",
color=discord.Color.blue()
)
await interaction.response.send_message(embed=users_id_ist_im_ticket, ephemeral=True)
return
overwrites[interaction.guild.default_role] = discord.PermissionOverwrite(
read_messages=False,
send_messages=False,
)
overwrites[user] = discord.PermissionOverwrite(
read_messages=False,
send_messages=False,
add_reactions=False,
use_slash_commands=False,
external_emojis=False,
use_external_emojis=False,
mention_everyone=False,
attach_files=False,
embed_links=False,
manage_messages=False,
send_tts_messages=False,
create_instant_invite=False,
)
await text_channel.edit(overwrites=overwrites)
embed = discord.Embed(
title="✅ User erfolgreich hinzugefügt",
description=f"{interaction.user.mention} hat den User {user.mention} dem Ticket hinzugefügt",
color=discord.Color.green()
)
await interaction.response.send_message(embed=embed)``` warum keine user Hinzufuegen wurd
hey ich hätte eine Frage an euch Kennst sich einer Mit Config.json aus Das man Die ID/ tokens und so rein packen kann oder geht das auch in .env
Fehler?
Mit Code in die Datei laden? Weil du kannst auch in eine .env manuell was eintragen.
das Heißt OWNER_ID = (OWNER ID)
komm kein
So oder was ??
Wieso nutzt keine Datenbank dafür?
Wo? xD
wenn meinst du ??
Dich.
okay kenne mich nicht so gut Mit datenbanken aus
Aber warum soll man das in einer datenbank machen
Ist meiner Meinung nach übersichtlicher als das in ner Datei abzuspeichern.
Aber kann man das machen was ich Vorhin gesagt habe
Habe bisher keinen Weg gefunden, sowas zu machen.
komm
Ich glaube mithilfe von jsons auch nicht wirklich easy.
Verstehe nicht was du mit "komm" meinst.
Wo du die Owner-ID speicherst kannst du selbst entscheiden. IDs sind nicht geheim und können im Code, in einer JSON-Datei oder einer .env Datei gespeichert werden.
Private Dinge wie Tokens oder Keys sollten immer in einer .env Datei sein.
okay
weiss einer warum kommt das die ganze zeit
import discord
from discord.ext import commands
from discord.commands import slash_command
class Info(ezcord.Cog):
def __init__(self, bot):
self.bot = bot
@slash_command(name="bot-info", description="Get information about the bot")
async def bot_info(self, ctx):
embed = discord.Embed(title="Bot Information", color=0x7289DA)
embed.add_field(name="Bot Name", value=self.bot.user.name, inline=False)
embed.add_field(name="Bot ID", value=self.bot.user.id, inline=False)
embed.add_field(name="Guilds", value=len(self.bot.guilds), inline=False)
embed.add_field(name="Commands", value=len(self.bot.commands), inline=False)
embed.add_field(name="Dev Mein Name", inline=False)
await ctx.send(embed=embed)
def setup(bot):
bot.add_cog(Info(bot))
[COGS] Loaded 1 cog
Traceback (most recent call last):
File "C:\Users\vison\Desktop\Amo Bot\.venv\lib\site-packages\discord\cog.py", line 774, in _load_from_module_spec
spec.loader.exec_module(lib) # type: ignore
File "<frozen importlib._bootstrap_external>", line 883, in exec_module
File "<frozen importlib._bootstrap>", line 241, in _call_with_frames_removed
File "C:\Users\vison\Desktop\Amo Bot\cogs\botinfo\Botinfo.py", line 7, in <module>
class Info(ezcord.Cog):
File "C:\Users\vison\Desktop\Amo Bot\.venv\lib\site-packages\ezcord\bot.py", line 890, in __new__
return super().__new__(cls, *args, **kwargs)
File "C:\Users\vison\Desktop\Amo Bot\.venv\lib\site-packages\discord\cog.py", line 187, in __new__
raise TypeError(no_bot_cog.format(base, elem))
TypeError: Commands or listeners must not start with cog_ or bot_ (in method Info.bot_info)
The above exception was the direct cause of the following exception:
Traceback (most recent call last):
File "C:\Users\vison\Desktop\Amo Bot\main.py", line 30, in <module>
bot.load_cogs(
File "C:\Users\vison\Desktop\Amo Bot\.venv\lib\site-packages\ezcord\bot.py", line 315, in load_cogs
self.load_extension(cog)
File "C:\Users\vison\Desktop\Amo Bot\.venv\lib\site-packages\discord\cog.py", line 910, in load_extension
self._load_from_module_spec(spec, name)
File "C:\Users\vison\Desktop\Amo Bot\.venv\lib\site-packages\discord\cog.py", line 777, in _load_from_module_spec
raise errors.ExtensionFailed(key, e) from e
discord.errors.ExtensionFailed: Extension 'cogs.botinfo.Botinfo' raised an error: TypeError: Commands or listeners must not start with cog_ or bot_ (in method Info.bot_info)
Process finished with exit code 1```
bitte den relevanten code senden
...
- await ctx.respond
- bei add_field brauchst du value
les den error nochmals
Wie meinst du ??
import ezcord
import discord
from discord.ext import commands
from discord.commands import slash_command
class Info(ezcord.Cog):
#das kannst du weglassen weil bei ezcord des du nicht brauchst
@slash_command(name="bot-info", description="Get information about the bot")
async def bot_info(self, ctx):
embed = discord.Embed(title="Bot Information", color=0x7289DA)
embed.add_field(name="Bot Name", value=self.bot.user.name, inline=False)
embed.add_field(name="Bot ID", value=self.bot.user.id, inline=False)
embed.add_field(name="Guilds", value=len(self.bot.guilds), inline=False)
embed.add_field(name="Commands", value=len(self.bot.commands), inline=False)
embed.add_field(name="Dev Mein Name",value="", inline=False) # wenn du add_field benutzt ist eine value pflicht wenn die leer sein soll mach es einfach so wie hier
await ctx.respond(embed=embed)
def setup(bot):
bot.add_cog(Info(bot))```
class Info(ezcord.Cog):
mach mal cogs\botinfo.py
ohne botinfo ordner
[COGS] Loaded 1 cog
Traceback (most recent call last):
File "C:\Users\vison\Desktop\Amo Bot\.venv\lib\site-packages\discord\cog.py", line 774, in _load_from_module_spec
spec.loader.exec_module(lib) # type: ignore
File "<frozen importlib._bootstrap_external>", line 883, in exec_module
File "<frozen importlib._bootstrap>", line 241, in _call_with_frames_removed
File "C:\Users\vison\Desktop\Amo Bot\cogs\Botinfo.py", line 7, in <module>
class Info(ezcord.Cog):
File "C:\Users\vison\Desktop\Amo Bot\.venv\lib\site-packages\ezcord\bot.py", line 890, in __new__
return super().__new__(cls, *args, **kwargs)
File "C:\Users\vison\Desktop\Amo Bot\.venv\lib\site-packages\discord\cog.py", line 187, in __new__
raise TypeError(no_bot_cog.format(base, elem))
TypeError: Commands or listeners must not start with cog_ or bot_ (in method Info.bot_info)
The above exception was the direct cause of the following exception:
Traceback (most recent call last):
File "C:\Users\vison\Desktop\Amo Bot\main.py", line 30, in <module>
bot.load_cogs(
File "C:\Users\vison\Desktop\Amo Bot\.venv\lib\site-packages\ezcord\bot.py", line 315, in load_cogs
self.load_extension(cog)
File "C:\Users\vison\Desktop\Amo Bot\.venv\lib\site-packages\discord\cog.py", line 910, in load_extension
self._load_from_module_spec(spec, name)
File "C:\Users\vison\Desktop\Amo Bot\.venv\lib\site-packages\discord\cog.py", line 777, in _load_from_module_spec
raise errors.ExtensionFailed(key, e) from e
discord.errors.ExtensionFailed: Extension 'cogs.Botinfo' raised an error: TypeError: Commands or listeners must not start with cog_ or bot_ (in method Info.bot_info)
Process finished with exit code 1
Hier
code ?
ja main.py
ja des geht so oder so nd
geht gar nichts mehr
ik
ya
aber als name geht es es geht nur bei async def nd
name="bot-info" ist er commmad name
das geht
import ezcord
import discord
from discord.ext import commands
from discord.commands import slash_command
class Info(ezcord.Cog):
@slash_command(name="botinfo", description="Get information about the bot")
async def botinfo(self, ctx):
embed = discord.Embed(title="Bot Information", color=0x7289DA)
embed.add_field(name="Bot Name", value=self.bot.user.name, inline=False)
embed.add_field(name="Bot ID", value=self.bot.user.id, inline=False)
embed.add_field(name="Guilds", value=len(self.bot.guilds), inline=False)
embed.add_field(name="Commands", value=len(self.bot.commands), inline=False)
embed.add_field(name="Dev Mein Name", value="", inline=False)
await ctx.respond(embed=embed)
def setup(bot):
bot.add_cog(Info(bot))``` @misty narwhal test mal zu
du darf bei async def kein _ oder -
was redest du xD
Also bei mir geht bei name mit - und bei async def mit _ verstehe nicht was du da meinst
er ist auch stolzer better discord oder vencord user
les erstmal was ich geschrieben habe dann kannste dir des sparen 
Vencord
dafür kann man geban werden
Lucky ich hab ein Problem
ich omg
buttonhandler war das dümmste was man machen könnte
auch
du omg?
ich hab ein problem omg
omg
ja nh
Kann ich auch einer Option, eine beschreibung hinzufügen? Die Datei ist in einem Cog drinnen und hier der Code:
@slash_command(description="Lass den Bot eine Nachricht senden")
@commands.has_role(1191247739015671838)
async def send_message(self, ctx,
text: str,
channel: discord.TextChannel = None):
if channel is None:
channel = ctx.channel
await channel.send(text)
await ctx.respond("Sent!", ephemeral=True)
du kannst immer natürlich eine Option einfügen
ich meine eine Beschreibung, zu der Option
wie z.b hier:
bei mir steht halt immer "No description provided"
ja, weil du der option auch keine beschreibung zugewiesen hast.
so in der art dürfte es klappen
okay moment
Jap, es funktioniert, danke

Und wie kann man die role Wieder jemanden Entfernen über Den gleichen button
mit einer if abfrage
weiß nicht wie das geht
dann google
role = self.bot.get_role(ROLLEN_ID)
if role in interaction.user.roles:
await interaction.user.remove_roles(role)
else:
await interaction.user.add_roles(role)```
@outer ibex
Bin gerade nur am Handy, musst wegen der Einrückung gucken
role = self.bot.get_role(ROLLEN_ID)
if role in interaction.user.roles:
await interaction.user.remove_roles(role)
else:
await interaction.user.add_roles(role)```
funktoniert danke
Ich habe eine frage wieso bekomme ich diesen error?
await item.callback(interaction)
^^^^^^^^^^^^^^^^^^^^^^^^^^
TypeError: setButtonColor.callback() missing 1 required positional argument: 'interaction'
dies ist mein code:
class setButtonColor(discord.ui.Select):
def __init__(self):
options = [
discord.SelectOption(label="Primary (Blau)", value="primary", emoji="🔵"),
discord.SelectOption(label="Secondary (Grau)", value="secondary", emoji=""),
discord.SelectOption(label="Success (Grün)", value="success", emoji=""),
discord.SelectOption(label="Danger (Rot)", value="danger", emoji=""),
]
super().__init__(placeholder="Farbe auswählen", custom_id="set_button_color", min_values=1, max_values=1, options=options, row=1,)
async def callback(self, select: discord.ui.Select, interaction: discord.Interaction):
await interaction.response.send_message(content=f"{select.values[0]}")
brauchst du nicht auch eine view dazu 🤔
Bro du denkst nicht das ist mein voller code oder?
NAH HAHAHA ja die hab ich aber ich mach da ja mein callback
Luckyy
ja habe getestet also mach beim callback des self weg dann geht es
sicher
ja habe es getestet les doch 😠
der benutzt des self als select etc.
Dankeschön es geht
weil du kein self benutzt unten
und was wenn es ich mal benutze würde es dann so gehen?
ja kannst es doch testen 
ja irgenwann mal
Er sendet nur 2 von 3 buttons
du hast 2 mal die selbe custom_id deswegen würde ich behaupten sendet er nur einen
danke geht jetzt
Wie kann man in pycord eine slash command „mention“
</slashcommandname:slashcommandid>
Wenn du kein EzCord nutzt
Mit ezcord geht das einfacher, weiß ich aber grad nicht
Ja
Ich denke mal das ist das
@urban glen ohne die Datei gehts was mach ich jz?
Ja, das isses
import json
import os
import random
import discord
from discord.ext import commands
class Welcome(commands.Cog):
def __init__(self, bot):
self.bot: commands.Bot = bot
self.file_path = 'data.json'
self.default_data = {
'channel_id': 123,
'messages': [
'Willkommen {member}!',
'{member.mention} ist beigetreten'
]
}
if not os.path.exists(self.file_path):
with open(self.file_path, 'w') as f:
json.dump(self.default_data, f, indent=4)
self.data = self.default_data
print(f'Created {self.file_path!r}')
else:
with open(self.file_path, 'r') as f:
self.data = json.load(f)
@commands.Cog.listener()
async def on_member_join(self, member: discord.Member):
channel_id = self.data['channel_id']
channel = self.bot.get_channel(channel_id)
messages = self.data['messages']
message: str = random.choice(messages)
message = message.format(member=member)
await channel.send(message)
@commands.command()
async def test_join(self, ctx):
"""Führt das on_member_join event zum testen aus."""
self.bot.dispatch('member_join', ctx.author)
Hab die ID natürlich geändert
[ERROR] Error in event on_ready
Traceback (most recent call last):
File "C:\Users\Max\AppData\Local\Programs\Python\Python311\Lib\site-packages\discord\client.py", line 378, in _run_event
await coro(*args, **kwargs)
File "c:\Users\Max\Documents\Programmieren\Discord-Bots\Aktive Bots\Vysion\cogs\user\economy.py", line 540, in on_ready
view.add_item(Button(self.bot))
File "C:\Users\Max\AppData\Local\Programs\Python\Python311\Lib\site-packages\discord\ui\view.py", line 287, in add_item
raise TypeError(f"expected Item not {item.__class__!r}")
TypeError: expected Item not <class 'cogs.user.economy.Button'>
ist das alles?
ohne setup?
"Button" ist scheinbar ein Cog und kein Button, eventuell hast du beides gleich benannt?
welches beides?
class Button(discord.ui.View):
def __init__(self, bot):
super().__init__(timeout=None)
self.bot = bot
@discord.ui.button(label="Current streak", style=discord.ButtonStyle.blurple, emoji='📈', custom_id="StreakButton")
async def callback(self, button: discord.ui.Button, interaction: discord.Interaction):
habe eine class noch namens SternDB und stern als ezcord.Cog
Hab das aber wurde irgendwie nd copy
Hallo weiß wer ob es modals mit einen dropdown gibt also nicht das es geschickt wird per dropdown sondern das eines innerhalb des modals enthalten ist?
ne
da gibts nur textinputs
[ERROR] Error in event on_ready
Traceback (most recent call last):
File "C:\Users\Max\AppData\Local\Programs\Python\Python311\Lib\site-packages\discord\client.py", line 378, in _run_event
await coro(*args, **kwargs)
File "c:\Users\Max\Documents\Programmieren\Discord-Bots\Aktive Bots\Vysion\cogs\user\economy.py", line 540, in on_ready
view.add_item(CurrentStreak(self.bot))
File "C:\Users\Max\AppData\Local\Programs\Python\Python311\Lib\site-packages\discord\ui\view.py", line 287, in add_item
raise TypeError(f"expected Item not {item.__class__!r}")
TypeError: expected Item not <class 'cogs.user.economy.CurrentStreak'>
selbst wenn ich die button class umbenenne
oh gott nene
habs grad gesehen
du hast die Klasse zwar button genannt aber es ist kein Button sondern eine View
Das ist eine ziemlich schlechte idee von der Benennung her
du kannst also einfach schreiben : self.bot.add_view(Button(self.bot))
und das würde reichen als view, mach doch aber wenisgtens ButtonView oder was auch immer die View macht
dann passiert sowas nicht :=)
achso
habe es jetzt einfach CurrentStreakView
Jo
Moin
ich bekomme vom ezcord bug handler immer diesen error bevor alles geht(ist auch kein error in der console)
Code:
```py
class Jointocreate(ezcord.Cog, emoji=":voicechannel~1:"):
@commands.Cog.listener()
async def on_voice_state_update(self, member: discord.Member, before, after):
cursor.execute(f"SELECT category FROM setup WHERE guild = {member.guild.id}")
result = cursor.fetchone() # Auf das Ergebnis warten
cursor.execute(f"SELECT vchannel FROM setup WHERE guild = {member.guild.id}")
resul1 = cursor.fetchone() # Auch hier auf das Ergebnis warten
if before.channel is None:
if after.channel.id == int(resul1[0]):
category = discord.utils.get(member.guild.categories, id=int(result[0]))
channel = await category.create_voice_channel(name=member.name)
await member.move_to(channel)
await member.voice.channel.set_permissions(member, manage_channels=True, manage_permissions=True)
def check(x, y, z):
return len(channel.members) == 0
await self.bot.wait_for('voice_state_update', check=check)
await channel.delete(reason="TempVoice ist leer")```
wo ist cursor definiert?
conn = sqlite3.connect('db/jtc.db')
cursor = conn.cursor()```
da alles geht wundere ich mich 😅
ist das auch im db ordner?
sicher dass der error bei diesem bot auftritt?
Ich habe in Pycharm dieses Plugin das anzeigt das ich in pycharm bin aber es wird nicht die datei angezeigt die ich bearbeite
Obwohl ich so eingestellt habe
schau mal nach ob du das vielleicht für das aktuelle projekt ausgeschaletet hast, das geht bei diesem pfeil
jetzt gehts danke
So also ich habe einen Slash Command der eine Nachricht und ein Select Menu sendet
Wenn ich jetzt was aus dem Selevt Menu auswähle, soll die ursprüngliche Nachricht zur neuen Nachrich tbearbeitet werden, das Select menu soll dabei beibehlaten werden
wie kann ich das machen
wenn du nur das embed bearbeitest, sollte das select menü automatisch da bleiben
aber wie genau kann ich das embed bearbeiten also die ursprüngliche Nachricht ändern?
interaction.response.edit_message(embed=embed)
gernööö
Ich verzweifel ich hab schon alles geupdatet und getan aber bringt nix...
Code ```import json
import os
import random
import discord
from discord.ext import commands
class willkommen(commands.Cog):
def init(self, bot):
self.bot: commands.Bot = bot
self.file_path = 'data.json'
self.default_data = {
'channel_id': 1445972004765810,
'messages': [
'Willkommen {member}!',
'{member.mention} ist beigetreten'
]
}
if not os.path.exists(self.file_path):
with open(self.file_path, 'w') as f:
json.dump(self.default_data, f, indent=4)
self.data = self.default_data
print(f'Created {self.file_path!r}')
else:
with open(self.file_path, 'r') as f:
self.data = json.load(f)
@commands.Cog.listener()
async def on_member_join(self, member: discord.Member):
channel_id = self.data['channel_id']
channel = self.bot.get_channel(channel_id)
messages = self.data['messages']
message: str = random.choice(messages)
message = message.format(member=member)
await channel.send(message)
@commands.command()
async def test_join(self, ctx):
"""Führt das on_member_join event zum testen aus."""
self.bot.dispatch('member_join', ctx.author)
def setup(bot):
bot.add_cog(willkommen(bot))```
hast du dir schon #🔍・pycord-help angeschaut?
ja warum?
Entfern mal das test_join inklusive decorator (das mit @)
Und schau ob’s daran liegt
das ganze @ ?
wenn du discord.Bot in deiner main datei nutzt, kannst du nur slash commands nutzen. du hast ja in deinem code einen prefix command mit @commands.command()
wie kann man in pycord custom status machen also das man nicht nur play, listen etc. hat
es geht danke
Er benutzt laut type hint im Konstruktor einen commands.Bot
Das geht nur mit der pycord dev version
das stimmt, aber bei python kann man trotzdem ein discord.Bot übergeben
uh wie bekommt man die
steht hier bestimmt irgendwo hab’s grad nicht parat
oder master branch falls des nicht desselbe ist 😅
Kannst beim GitHub von pycord gucken da steht in der Readme
Mein Discord Server
► https://discord.gg/zfvbjTEzv6
▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬
Mein Hosting* ► https://tidd.ly/3gJufg6
Code auf Github ► https://github.com/tibue99/tutorial-bot
PYCORD
Docs ► https://docs.pycord.dev/
Guide ► https://guide.pycord.dev/introduction/
Discord Server ► https://discord.gg/pycord
Discord Developer Portal ► https://discord...
@slow cosmos
Glaub ist das selbe
okay
ich hab da so eine task die den status immer aktualisiert wie kann ich das da machen
code?
Das mein bisheriger Code:
# Define the bot
bot = ezcord.Bot(intents=discord.Intents.all(), language="en")
@bot.event
async def on_ready():
print(f"We have logged in as {bot.user}")
# Start Tasks
update_status.start()
change_nickname.start()
# .....
# Automatically change the Status of the Bot to the current Server Count
@tasks.loop(minutes=10)
async def update_status():
guild_count = len(bot.guilds)
await bot.change_presence(activity=discord.Game(name=f"on {guild_count} Servers!"))
kannst einf ezcord status changer usen 🙂
await bot.change_presence(activity=discord.CustomActivity(name=f"on {guild_count} Servers!"))```
das geht irgendwie nicht es kommt keine error oder so es wird eifnach kein status angezeigt
hast du den pycord master branch?
uh wie genau jz?
pip install git+https://github.com/Pycord-Development/pycord
du musst davor aber py-cord deinstallieren
nö
doch 🙂
hm ne ka wie ich das mache in pycharm terminal da kommt imme rpip nicht gefunden
du kannst es auch über pycharm machen
Collecting git+https://github.com/Pycord-Development/pycord
Cloning https://github.com/Pycord-Development/pycord to c:\users\damia\appdata\local\temp\pip-req-build-v0jr_1nh
ERROR: Error [WinError 2] Das System kann die angegebene Datei nicht finden while executing command git version
ERROR: Cannot find command 'git' - do you have 'git' installed and in your PATH?
[notice] A new release of pip is available: 23.2.1 -> 23.3.2
[notice] To update, run: C:\Users\damia\AppData\Local\Programs\Python\Python311\python.exe -m pip install --upgrade pip
git installieren
hab ich
Ah hab fehler gefunden jz kommt aber:
ERROR: Invalid requirement: "git+Collecting git+https://github.com/Pycord-Development/pycord Cloning https://github.com/Pycord-Development/pycord to c:\\users\\damia\\appdata\\local\\temp\\pip-req-build-v0jr_1nh ERROR: Error [WinError 2] Das System kann die angegebene Datei nicht finden while executing command git version ERROR: Cannot find command 'git' - do you have 'git' installed and in your PATH? [notice] A new release of pip is available: 23.2.1 -> 23.3.2 [notice] To update, run: C:\\Users\\damia\\AppData\\Local\\Programs\\Python\\Python311\\python.exe -m pip install --upgrade pip"
Hint: It looks like a path. File 'git+Collecting git+https://github.com/Pycord-Development/pycord Cloning https://github.com/Pycord-Development/pycord to c:\users\damia\appdata\local\temp\pip-req-build-v0jr_1nh ERROR: Error [WinError 2] Das System kann die angegebene Datei nicht finden while executing command git version ERROR: Cannot find command 'git' - do you have 'git' installed and in your PATH? [notice] A new release of pip is available: 23.2.1 -> 23.3.2 [notice] To update, run: C:\Users\damia\AppData\Local\Programs\Python\Python311\python.exe -m pip install --upgrade pip' does not exist.
[notice] A new release of pip is available: 23.2.1 -> 23.3.2
[notice] To update, run: C:\Users\damia\AppData\Local\Programs\Python\Python311\python.exe -m pip install --upgrade pip
ah jz gehts
musste pycharm nochmal neu starten
Ich dachte es klappt... wenn jmd joint kommt das @urban glen
hm sieht aus als findet er den channel wohl nd
muss ich statt send die Id eintragen?
jaja
zeig dein code aber nein
async def on_member_join(self, member: discord.Member):
channel_id = self.data['channel_id']
channel = self.bot.get_channel(channel_id)
messages = self.data['messages']
message: str = random.choice(messages)
message = message.format(member=member)
await channel.send(message)
so müsste aber eig gehen, solange data['channel_id'] existiert
danke 😄
muss da die id rein?
@urban glen
habs probiert geht nd
befolg doch bitte die regeln
.-.
printe doch mal self.data und schau was drin steht
spamme deine Frage nicht und pinge keine anderen User **ohne **Erlaubnis
ziblic darf ich dich pingen ? (muss nach Erlaubnis fragen)
hab geht trotzdem nd
was wird denn geprinted
vermutlich nix 😄
doch?
wo
. das ist meiner
und was soll der tun
funktionieren 😄
das heißt
ka
ja dann funktioniert er doch
dann ist wohl in der json oder Liste nix gespeichert
ich habe kein json datei...
Hier ist eigentlich die Id drin class willkommen(commands.Cog): def __init__(self, bot): self.bot: commands.Bot = bot self.file_path = 'data.json' self.default_data = { 'channel_id': 1445972004765810, 'messages': [ 'Willkommen {member}!', '{member.mention} ist beigetreten' ] }
async def on_member_join(self, member: discord.Member):
channel_id = self.default_data['channel_id']
channel = self.bot.get_channel(channel_id)
messages = self.default_data['messages']
message: str = random.choice(messages)
message = message.format(member=member)
await channel.send(message)
das hinmachen?
teste es
Jetzt Ignoring exception in on_member_join Traceback (most recent call last): File "C:\Users\King Silvio\PycharmProjects\pythonProject\.venv\lib\site-packages\discord\client.py", line 378, in _run_event await coro(*args, **kwargs) File "C:\Users\King Silvio\PycharmProjects\pythonProject\cogs\willkommen.py", line 38, in on_member_join await channel.send(message) AttributeError: 'NoneType' object has no attribute 'send'
Als Erorr
Wo ist das Print?
habs wieder weg da stande nix
Wo du den im Code hingeschrieben hast
da drunter
was sagt das den jz?
das er kein channel findet
komisch
hätte ich hier etwas ändern müssen?
du hast keine json datei also was erwartest du
oke was muss ich jz machen?
⏳ Du wirst in 1 Minute an Test Reminder erinnert (<t:1705871226:f>).
Falscher Channel sorry
was muss dadrin sein?
willst du kurz call
Sorry bin eingeschlafen, lass eventuell heute Mittag Call
Hat eigentlich mal jemand getestet was raus kommt, wenn man einen hasattr check laufen lässt, das attribut zwar vorhanden ist, aber einen der Werte:
False
0
[]
""
# o.ä
hat?
hasattr gibt nur true zurück, wenn das Attribut vorhanden ist, unabhängig vom Attribut wert
Sehr geil, spart mir das basteln. Danke! 👍
Hast du jz Zeit bzw können wir es schriftlich machen?
@blissful ember send mal dein code
Welchen? Main mein Cog ?
async def on_member_join(self, member: discord.Member):
print(f'Daten: {self.data}')
channel_id = self.data['channel_id']
channel = self.bot.get_channel(channel_id)
messages = self.data['messages']
message: str = random.choice(messages)
message = message.format(member=member)
await channel.send(message)
mach mal so, mit dem print meine ich
du sollst am anfang vom member join self.data ausgeben
um zu schauen ob da die richtigen daten drin sind
Einfach deins copy und testen?
von mir aus
code ?
Channel is gibt es aber die ist auf 123
Logisch dass es den nicht gibt
Musst du in der json eintragen

Ich habe keine JSON
Kollege das ist dein Code
Da öffnest du den file_path data.json
Also hast du eine json. Wenn du selber nicht weißt was du da programmiert hast dann können wir dir auch nicht mehr helfen
Ein Code wäre sehr hilfreich.
Ist der eben markierte von mir
