#Allgemeine Hilfe
1 messages · Page 86 of 1
die gehören doch zsm
Der 1 Teil ist weiter oben und der unterste in weiter unten
@tawdry leaf
bitte auf deutsch
Warum nicht
du löscht die nachricht und fragst danach ob die nachricht 2 bilder hat xD
dann machst das besser bekommt kekse
😄
ewillst du kekse
geschenkt
if len(message.attachments) >= 2:
await message.channel.send(f'{message.author.mention} Der Bot kann keine zwei Bilder senden.')
else:
# Lösche die Nachricht, wenn sie keine zwei Bilder hat
await message.delete()```
kann er da schau halt hin
ah stimmt
noob
Kekse
was meinst du damit
Lösche die Nachricht, wenn sie keine zwei Bilder hat
naja das ist dann des was bei dir im try except ist
Ne
doch
Beweis
was redest du denn schon wieder
Geht das auch
if message.attachments:
if len(message.attachments) > 1:
await error(
message.channel,
f"Du kannst nicht mehr wie 1 Bild im Global Chat teilen!",
delete_after=5,
)
await message.delete()
else:
embed.set_image(url=message.attachments[0].url)
...
if len(message.attachments) >= 2:
await message.channel.send(f'{message.author.mention} Der Bot kann keine zwei Bilder senden.')
else:
embed.set_image(url=message.attachments[0].url)
await message.delete()
da löscht er die message halt nicht wenn es 1 hat oder keins
wie kann ich es so machen das wenn ich z.B Develoment auswähle das dann das Develoment Embed kommt?
Was
ich will ein command für Infomationen das man auswählen kann was man sehen will, aber es kommt ja dann immer das selbe embed (hoffelicht versteht mans 😦 )
kann jemand mir helfen?
was ist der codet?
Ganzer Fehler
wie meinst du?
jep
ich weiß ned wie ich es behbe habe eigendlich alles genau geschrieben habe wie immer
Ganzen Fehler senden
wie hast du den den Token in der .env definiert?
du musst des so machen:
TOKEN = hierdeintoken
ohne die ""
code
ich habe es so gemacht TOKEN = hiermeintoken
ja den haben gelöscht xD
sende mal deine main.py
import discord
import os
from dotenv import load_dotenv
import ezcord
intents = discord.Intents.all()
bot = ezcord.Bot(intents=intents)
if name == "main":
bot.load_cogs(subdirectories=True)
load_dotenv()
bot.run(os.getenv("TOKEN"))
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 stelle ich euch S...
from dotenv import load_dotenv
zeile 3?
jo
hab gemacht geht immer noch nicht .,.
geht immer noch nicht py mag mich einfach nicht .,.
hab auch nicht gesagt das es geht.
.
Mein Discord Server
► https://discord.gg/zfvbjTEzv6
Links aus diesem Video
EzCord Docs ► https://ezcord.readthedocs.io/
EzCord GitHub ► https://github.com/tibue99/ezcord
▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬
Mein Hosting* ► https://tidd.ly/3gJufg6
Code auf Github ► https://github.com/tibue99/tutorial-bot
PYCORD
Docs ► https://docs.pycord.dev/
Guide ► https:...
einf ins terminal pip freeze schreiben
hab
kann mir wer sagen wie ich so ein embed mache als das was drin is
da ist so gefühlt alles von discord.Embed drin
ne
wo steht es drin?
was genau denn meinst du aus dem bild
ja alles namen erwähnung id server beigetretetn account erstellet mitlieder nazahl und regeln
schau gerne mal in #1027677692730036294 da siehst du wie sowas geht
nach codes soll man hier nicht fragen..
bei welchen?
serverinfo
More features to make your bot cool and snazzy.
File "/home/container/.local/lib/python3.12/site-packages/discord/bot.py", line 1137, in invoke_application_command
await ctx.command.invoke(ctx)
File "/home/container/.local/lib/python3.12/site-packages/discord/commands/core.py", line 435, in invoke
await injected(ctx)
File "/home/container/.local/lib/python3.12/site-packages/discord/commands/core.py", line 138, in wrapped
ret = await coro(arg)
^^^^^^^^^^^^^^^
File "/home/container/.local/lib/python3.12/site-packages/discord/commands/core.py", line 1486, in _invoke
await command.invoke(ctx)
File "/home/container/.local/lib/python3.12/site-packages/discord/commands/core.py", line 435, in invoke
await injected(ctx)
File "/home/container/.local/lib/python3.12/site-packages/discord/commands/core.py", line 146, in wrapped
raise ApplicationCommandInvokeError(exc) from exc
discord.errors.ApplicationCommandInvokeError: Application Command raised an exception: OperationalError: no such table: ticket
async def setup(self):
try:
await self.execute(
"""CREATE TABLE IF NOT EXISTS ticket(
guild_id INTEGER PRIMARY KEY,
category_id INTEGER DEFAULT 0,
teamrole_id INTEGER DEFAULT 0,
logs_channel_id INTEGER DEFAULT 0,
channel_id INTEGER DEFAULT 0,
message_id INTEGER DEFAULT 0
)"""
)
await self.execute(
"""CREATE TABLE IF NOT EXISTS ticket_options(
guild_id INTEGER,
option_name TEXT,
FOREIGN KEY(guild_id) REFERENCES ticket(guild_id)
)"""
)
print("Tables 'ticket' and 'names' created successfully")
except Exception as e:
print(f"An error occurred while creating the tables: {e}")
Kann mir jemand sagen warum der error auftritt
steht drinnen
Ja aber die Tabelle wird ja erstellt
Wird die setup methode überhaupt aufgerufen? Versuch die mal im on_ready event auf zu rufen
Hat jemand eine Idee warum das durchgestriechen wird bei VS Code?
hover mal drüber
Lad dir einfach die db runter von github
was hast du den installiert das des durchgestrichen wird xD
Gib es mal bei vs code ein
oh, Ich sehe. Ich muss es nun alles zu .now ändern
Stell deine Frage doch bitte etwas spezifischer
Ich versuche einen Access Token zu bekommen von der API und bekomme immer
versuch mal .text() und nicht .json()
weil die api gibt dir text zurück und nicht json
404 = not found
yep
Es ist nur die richtige Seite von den Twitch docs ;3
omg
Ich hatte get drinnen und nicht post
ja
ne die gibt json
wenn man es richtig macht lul
text geht auch aber json ist richtig am ende
wozu text wenn json geht ^^
Er hat es aber nicht richtig gemacht also soll er halt .text() nutzen
soll er es halt richtig machen hab ich ja geschrieben
und ein token bekommen
^^
send doch mal die json 😄
welche?
response.json
Ich kann dir einfach eine mit nem alten Token schicken xd
brauche kein token meiner geht noch 😄
sonst bräcuhte ich ja mehr als den token xD
aber mein twitch funktioniert 🙂
was versuchst du denn mit der twitch api
ach, nur das mit dem follower, subscription und wenn jemand online geht
aso
Für den bot benutze ich einfach Twitch.IO dazu
Das macht es alles ein wenig einfacher
Hallo an alle,
nur mal ne frage
kann man auch bot profilbilder auf jeden server anders machen ?
weil mee6 hat das nur weiß einer wie das geht ?
What
?
na mee6 bot hat ein feature das man wenn man premium hat bei den das man den den bot namen und avatar aussuchen kann
obwohl es der selbe bot ist
weiß jemand wie ?
is nd der gleiche bot
da musst deinen eigenen hinmachen
aber er hat halt mee6s funktionen
Genau, du musst deinen eigenen Token angeben und die lassen dann mee6 darauf laufen
Ich könnte dafür mal ein kleines Beispiel Coden wenn Interesse da ist, wollte das eig schon länger mal ausprobieren
ja mach mal bitte
Aber ohne Website 
xd
Kann mir bitte jemand helfen ich weiß nicht was ich machen soll
Bin grade erst aufgestanden und sehe das
#/extend
Muss man doch nicht wenn man boosted
Wenn der Server erstellt wurde bevor du geboostet hast dann schon
ahh ok aber das wahren mehr als 7 Tage aber hat geklaptt danke (Danke für die schnelle Hilfe)
die mach ich dann 
.
kann mir wer sagen woran das liegt da sind doch keine dieser zeichen
Scope & Pricing?
alles gut hat sich geklärt das ist von fiverr
wusste nicht welche textfeld er damit meinte
Guten Abend, ich stehe gerade auf dem Schlauch
ich will nämlich die database.py "importieren" und dies innerhalb meiner team.py
wenn ich allerdings
from .. import database
nutze bekomme ich nur einen Errior
Traceback (most recent call last):
File "c:\Users\fabian2\PycharmProjects\real\bayernRP\cogs\team.py", line 4, in <module>
from .. import database
ImportError: attempted relative import with no known parent package
probier mal from database import database
Nein
aber muss man nd ne datei angeben?
wenn man nur ne bestimmte funktion haben will sollte es
from ..database import funktion sein.
Warum
wäre nen relativer import.
hab aber nochmal nachgeschaut, deine lösung sollte eigtl auch klappen
Habe ich doch geschrieben 😂
Gibt es eigentlich schon ne neue Lösung für nen Transcript-System bei Tickets?
Ne glaub nicht
Wie meinst
Naja das hier ist ja nicht mehr so aktuell und so.
Mein Discord Server
► https://discord.gg/zfvbjTEzv6
Links aus diesem Video
Chat Exporter ► https://github.com/mahtoid/DiscordChatExporterPy
▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬
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/introductio...
Doch eig schon
Naja ziemlich veraltet. Gibts da nichts neues?
Ne so weit ich weiß nicht
Kann man noch gut benutzen hat sich ja bei Discord nicht viel getan
Gibts da dennoch was aktuelleres?
Warum willst du denn was aktuelleres? Stört dich was oder funktioniert es nicht?
z.B. das nervt schon. Passt halt null mit rein
Ne, der Channel hat keine Description.
Du verwendest aber auch chat-exporter?
hab keinen bot aber cookie-bot verwendet das auch für ticket transcripts
und hab das noch nie gesehen
Naja CookieBot scheint ja selbst dran gebastelt zu haben ig.
Kann jetzt natürlich keine transcripts leaken aber das letze channel im ticket log hat das nicht
wie dran gebastelt?
die werden glaube auch nur in nen channel gesendet und wenn die aufgerufen wird holt der bot das attachment und gibt es zurück oder so
das mit in den channel senden sollte timo doch auch in seinem video gezeigt haben?
Ja, das geht ja, aber bei CookieBot fehlt dieser Text ja oben im Transkript.
Ich sag dazu nur skill issue scheint ein problem zu sein was nur du hast
vielleicht das package mal neu installieren?
Möglicherweise gibt es auch andere Methoden die HTML zu generieren. Ich verwende halt den Weg wie im Video von Timo, lul.
also bei timo im video ist es auch nicht
Genau das wundert mich ja xD
Verwendet Timo denn vllt jetzt n' anderen Weg?
ne?
installier mal das package neu oder so
Mach ich nachher mal. Danke dennoch für die Hilfe ^^
ja probier das mal aus, gerne
class ThreadNameModal(Modal):
def __init__(self):
super().__init__(
discord.ui.InputText(
label="Thread-Name",
placeholder="Gib den Namen des Threads ein.",
),
title="Thread-Name ändern",
)
async def callback(self, interaction: discord.Interaction):
await db.set_thread_name(self.children[0].value)
await interaction.response.send_message("Der Thread-Name wurde erfolgreich geändert.", ephemeral=True)
[ERROR] Error while executing /autothread edit
Traceback (most recent call last):
File "C:\Users\Schüler\AppData\Local\Programs\Python\Python311\Lib\site-packages\discord\commands\core.py", line 138, in wrapped
ret = await coro(arg)
^^^^^^^^^^^^^^^
File "C:\Users\Schüler\AppData\Local\Programs\Python\Python311\Lib\site-packages\discord\commands\core.py", line 1078, in _invoke
await self.callback(self.cog, ctx, **kwargs)
File "C:\Users\Schüler\Documents\Botify\cogs\Auto Actions\AutoThread.py", line 37, in edit
await ctx.respond(embed=embed, ephemeral=True, view=modal)
File "C:\Users\Schüler\AppData\Local\Programs\Python\Python311\Lib\site-packages\discord\interactions.py", line 616, in respond
return await self.response.send_message(*args, **kwargs)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\Users\Schüler\AppData\Local\Programs\Python\Python311\Lib\site-packages\discord\interactions.py", line 957, in send_message
await self._locked_response(
File "C:\Users\Schüler\AppData\Local\Programs\Python\Python311\Lib\site-packages\discord\interactions.py", line 1288, in _locked_response
await coro
File "C:\Users\Schüler\AppData\Local\Programs\Python\Python311\Lib\site-packages\discord\webhook\async_.py", line 224, in request
raise HTTPException(response, data)
discord.errors.HTTPException: 400 Bad Request (error code: 50035): Invalid Form Body
In data.components.0.components.0: Value of field "type" must be one of (2, 3, 5, 6, 7, 8).
dpy oder py-cord?
py-cord
Learn how you can implement Modals in your Discord Bot with Pycord!
versuch es mal wie hier bei py-cord
Traceback (most recent call last):
File "C:\Users\Schüler\AppData\Local\Programs\Python\Python311\Lib\site-packages\discord\commands\core.py", line 138, in wrapped
ret = await coro(arg)
^^^^^^^^^^^^^^^
File "C:\Users\Schüler\AppData\Local\Programs\Python\Python311\Lib\site-packages\discord\commands\core.py", line 1078, in _invoke
await self.callback(self.cog, ctx, **kwargs)
File "C:\Users\Schüler\Documents\Botify\cogs\Auto Actions\AutoThread.py", line 37, in edit
await ctx.respond(embed=embed, ephemeral=True, view=modal)
File "C:\Users\Schüler\AppData\Local\Programs\Python\Python311\Lib\site-packages\discord\interactions.py", line 616, in respond
return await self.response.send_message(*args, **kwargs)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\Users\Schüler\AppData\Local\Programs\Python\Python311\Lib\site-packages\discord\interactions.py", line 957, in send_message
await self._locked_response(
File "C:\Users\Schüler\AppData\Local\Programs\Python\Python311\Lib\site-packages\discord\interactions.py", line 1288, in _locked_response
await coro
File "C:\Users\Schüler\AppData\Local\Programs\Python\Python311\Lib\site-packages\discord\webhook\async_.py", line 224, in request
raise HTTPException(response, data)
discord.errors.HTTPException: 400 Bad Request (error code: 50035): Invalid Form Body
In data.components.0.components.0: Value of field "type" must be one of (2, 3, 5, 6, 7, 8).
if action == "add":
embed = discord.Embed(
title="AutoThread aktiviert",
description=f"✅ Das AutoThread-System wurde für den Kanal {channel.mention} aktiviert.",
color=BOT_COLOR
)
embed.set_author(name=BOT_AUTHOR_NAME, icon_url=BOT_AVATAR)
embed.set_image(url=BOT_IMAGE)
modal = ThreadNameModal(title="Thread-Name hinzufügen")
await db.add_channel(channel.id)
await ctx.respond(embed=embed, ephemeral=True, view=modal)
class ThreadNameModal(Modal):
def __init__(self, *args, **kwargs):
super().__init__(*args, **kwargs)
self.add_item(InputText(label="Thread-Name", placeholder="Gib den Namen des Threads ein."))
async def callback(self, interaction: discord.Interaction):
await db.add_thread_name(self.children[0].value)
await interaction.response.send_message("Thread-Name erfolgreich hinzugefügt.", ephemeral=True)
@rigid sluice
danke habs
@rigid sluice weißst du warum der da immer ien 1 hin tut wenn ich einen channel hinzufüge
class AutoThreadDB(ezcord.DBHandler):
def __init__(self):
super().__init__("utils/data/autothread.db")
async def setup(self):
await self.exec(
"""CREATE TABLE IF NOT EXISTS channels (
channel_id INTEGER PRIMARY KEY,
thread_name TEXT NOT NULL
)
""")
async def add_channel(self, channel_id):
await self.exec("INSERT OR IGNORE INTO channels (channel_id) VALUES (?)", (channel_id))
async def remove_channel(self, channel_id):
await self.exec("DELETE FROM channels WHERE channel_id = ?", (channel_id,))
async def get_channel(self, channel_id):
return await self.one("SELECT channel_id, thread_name FROM channels WHERE channel_id = ?", (channel_id,))
async def get_all_channels(self):
return await self.all("SELECT channel_id, thread_name FROM channels")
async def set_thread_name(self, thread_name):
await self.exec(
"INSERT OR REPLACE INTO channels (thread_name) VALUES (?)",
thread_name
)
async def get_thread_name(self, channel_id):
result = await self.get_channel(channel_id)
return result[1] if result else None
bin grade überfordert
Ignoring exception in on_connect
Traceback (most recent call last):
File "C:\Users\leonf\AppData\Local\pypoetry\Cache\virtualenvs\planetbot-1aVSNs0I-py3.12\Lib\site-packages\discord\client.py", line 439, in _run_event
await coro(*args, **kwargs)
File "C:\Users\leonf\AppData\Local\pypoetry\Cache\virtualenvs\planetbot-1aVSNs0I-py3.12\Lib\site-packages\discord\bot.py", line 1214, in on_connect
await self.sync_commands()
File "C:\Users\leonf\AppData\Local\pypoetry\Cache\virtualenvs\planetbot-1aVSNs0I-py3.12\Lib\site-packages\discord\bot.py", line 761, in sync_commands
app_cmds = await self.register_commands(
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\Users\leonf\AppData\Local\pypoetry\Cache\virtualenvs\planetbot-1aVSNs0I-py3.12\Lib\site-packages\discord\bot.py", line 538, in register_commands
prefetched_commands = await self._bot.http.get_guild_commands(
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\Users\leonf\AppData\Local\pypoetry\Cache\virtualenvs\planetbot-1aVSNs0I-py3.12\Lib\site-packages\discord\http.py", line 368, in request
raise Forbidden(response, data)
discord.errors.Forbidden: 403 Forbidden (error code: 50001): Missing Access```
wegen was
was hat der häh
wiso forbidden?
der bot hatkeine rechte
irgendwas scheint keine zugriff zu haben
schick mal code
ich hab ihm admin gegeben
code?
Die server id stimmt nicht über ein
😂
warum die server id
aber auf meinem hauptserver geht er
nö ich schau mal kurz auf dem hauptserver
er hat auch nicht die Danke fürs einladen des Bots geladen
die sollte er eigendlich senden
auf dem hauptserver läd er normal
das klappt wie es soll
oh ich habs
uff ich bin so lost
Also der Hauptbot geht wieder
Aber die Naricht Die Danke fürs einladen sagt und einige Infos enthält läd nicht ich schicke den Code wenn ich zu Hause bin bin kurz einkaufen
kann mir wer helfen
Wo genau setzt er die 1?
in
channel_id
Also channel_id = 1?
also ich habe ein Channel gesetzt aber Statt der Channel ID kommt die 1
Bei add_channel oder wo?
Musst schon genauer werden.
Jo bei add Channel
Lass dir mal channel_id printen.
In der Datenbank?
async def add_channel(self, channel_id):
print(f'DEBUG: {channel_id}')
await self.exec("INSERT OR IGNORE INTO channels (channel_id) VALUES (?)", (channel_id))```
DEBUG: 1248662257357946895
Dann ist ja die variable richtig..
warum wird in der datenbank 1 angezeigt
Wird der Wert auch korrekt so eingetragen? Kenne mich mit MySQL halt null aus.
Naja aber die Abfragen sind ja gleich ig?
Kannst du den Wert in der DB mal zu 2 ändern und es neu testen?
wie meinst du das
Händisch in der DB auf 2 ändern
?
Geht das nicht?
ne nicht mit aiosqlite
@solid ingot tut mir leid dich zu stören.
Mit den ezcord DBHandler wird Timo sich ja am besten auskennen xD
jo
besser stören als zerstören sagt tobi immer
Kann man nen Wert via ezcord DBHandler händisch abändern?
naja du kannst da ganz normale sql abfragen reinhauen, also kannst du damit im grunde alles machen
Lies mal ab hier:
#1019974414487535736 message
Vllt siehst du ja sogar was wrong ist.
das ist kein tuple
wie meinst
channel_id wird ja korrekt ausgegeben, siehe: #1019974414487535736 message
das ist aber immer noch kein tuple
Ich kenne nen tuple nur z.B. so: "(1248662257357946895,)"
jo das ist ein tuple
Aber er möchte ja kein tuple angeben, sondern die ID als Ganzzahl.
Also "1248662257357946895", so wie es ja auch geprintet wird eine Zeile drüber. xD
nach der channel_id muss ein Komma hin oder die Klammern um channel_id werden komplett wegelassen, dann kümmert sich ezcord um die konvertierung zum tuple
weil bei aiosqlite brauch man da immer ein tuple
soo
@commands.Cog.listener()
async def on_guild_join(self, guild):
print(random.choice(guild.text_channels))
self.embed = discord.Embed(title=f"Danke fürs Einladen des Bots",
description=f"ich hoffe du wirst viel Spaß Haben mit dem bot um dir die befehle anzeigen zu lassen nutze help",
color=0xc800ff)
channel = random.choice(guild.text_channels)
await channel.send(embed=self.embed)
invite = await guild.text_channels[0].create_invite(reason="Save for Support", max_age=0, max_uses=0, temporary=False, unique=True)
self.embed2 = discord.Embed(title=f"Planet Bot Jointe auf einen Server {invite}",
description=f"der Bot: {self.bot.user.name} wurde zu: {guild.name} Eingeladen",
color=0xc800ff)
channel = self.bot.get_channel(926861744712863774)
await channel.send(embed=self.embed2)
warum geht das nicht
Error?
es passiert gar nichts
@edgy scaffold Sind deine Tk probleme eigentlich gelöst?
Mach zwischendrin einfach mal paar prints..
Zum debugen
Dann erstmal vernünftig debuggen ^^
Tiefkühlpommes... 🤤
@charred frigate fix mal dein Bot. 🙂
Ist es möglich bei einem Slash Befehl nach einem ctx.respond eine Modal mit ctx.send_modal zu senden? Also das 2x auf die Interaktion reagiert wird? Den ctx.respond möchte ich ephemeral senden.
Vielleich weiß @solid ingot was.
Lieber stören, als zerstören.

also muss ich channel_id, machen
ja so (channel_id,) oder alles weglassen also channel_id
geht nicht plötzlig geht es irgendwie will mich mein Code Ärgern
interesannt
ich hab im code stehen das der bot nen invite erstellen soll
geht trz nicht
und es klappt immer noch genau so ob wohl der code von vor 3 Jahren ist
habs so
async def add_channel(self, channel_id):
print(f'DEBUG: {channel_id}')
await self.exec("INSERT OR IGNORE INTO channels (channel_id) VALUES (?)", (channel_id,))
Was willst du machen?
Hab den Kontext nicht
autothread system
willst du die channel id in die Datenbank Speichern?
Nutz den Kanal mal nur so wie er gedacht ist ^^
Und was genau klappt nicht?
er tragt statt die channel id immer 1 ein
welche lib nuzt du zum Speichern?
wie meinst
aiosqllite?
jo
ahah
aber mit ezcord DBHandler
und wo holst du dir die channel id her?
Printe dir mal die channel id
durch ein channel
hab ich schon
DEBUG: 1248662257357946895 von der db
Geht das nicht so?
async def add_channel(self, channel_id):
print(f'DEBUG: {channel_id}')
await self.exec(f"INSERT OR IGNORE INTO channels (channel_id) VALUES (?)", ({channel_id},))```
Bei aio bin ich raus sorry, aber im Video sehen die Abfragen und Einträge anders aus ^^
Mein Discord Server
► https://discord.gg/zfvbjTEzv6
Links aus diesem Video
EzCord Docs ► https://ezcord.readthedocs.io/en/latest/ezcord/sql.html
▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬
Mein Hosting* ► https://tidd.ly/3gJufg6
Code auf Github ► https://github.com/tibue99/ezcord-template
▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬
Inhalt 📚
Heute schauen wir uns an, wie wir Datenbank...
aio bin ich auch nicht die hellste Birne.
also eigentlich müsste es so gehen schau mal ob die Tabelle existiert und richtig erstellt wird
ja wird richtig erstellt
Traceback (most recent call last):
File "C:\Users\Schüler\AppData\Local\Programs\Python\Python311\Lib\site-packages\discord\commands\core.py", line 138, in wrapped
ret = await coro(arg)
^^^^^^^^^^^^^^^
File "C:\Users\Schüler\AppData\Local\Programs\Python\Python311\Lib\site-packages\discord\commands\core.py", line 1078, in _invoke
await self.callback(self.cog, ctx, **kwargs)
File "C:\Users\Schüler\Documents\Botify\cogs\Auto Actions\AutoThread.py", line 36, in edit
await db.add_channel(channel.id)
File "C:\Users\Schüler\Documents\Botify\utils\db\database.py", line 538, in add_channel
await self.exec(f"INSERT OR IGNORE INTO channels (channel_id) VALUES (?)", ({channel_id},))
File "C:\Users\Schüler\AppData\Local\Programs\Python\Python311\Lib\site-packages\ezcord\sql\sqlite.py", line 324, in exec
raise e
File "C:\Users\Schüler\AppData\Local\Programs\Python\Python311\Lib\site-packages\ezcord\sql\sqlite.py", line 321, in exec
cursor = await db.execute(sql, args)
^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\Users\Schüler\AppData\Local\Programs\Python\Python311\Lib\site-packages\aiosqlite\core.py", line 193, in execute
cursor = await self._execute(self._conn.execute, sql, parameters)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\Users\Schüler\AppData\Local\Programs\Python\Python311\Lib\site-packages\aiosqlite\core.py", line 132, in _execute
return await future
^^^^^^^^^^^^
File "C:\Users\Schüler\AppData\Local\Programs\Python\Python311\Lib\site-packages\aiosqlite\core.py", line 115, in run
result = function()
^^^^^^^^^^
sqlite3.ProgrammingError: Error binding parameter 1: type 'set' is not supported
das wäre die ezcord handler version:
async def add_channel(self, channel_id):
print(f'DEBUG: {channel_id}')
await self.exec("INSERT OR IGNORE INTO channels (channel_id) VALUES (?)", channel_id)
nope
@autothread.command(description='Aktiviert oder deaktiviert das AutoThread-System für einen Channel.')
@option("action", description="🧵 Wähle eine Aktion.", choices=["add", "remove"])
@option("channel", description="🧵 Der Channel, der bearbeitet werden soll.")
async def edit(self, ctx: discord.ApplicationContext, action: str, channel: discord.TextChannel):
if action == "add":
embed = discord.Embed(
title="AutoThread aktiviert",
description=f"✅ Das AutoThread-System wurde für den Kanal {channel.mention} aktiviert.",
color=BOT_COLOR
)
embed.set_author(name=BOT_AUTHOR_NAME, icon_url=BOT_AVATAR)
embed.set_image(url=BOT_IMAGE)
await db.add_channel(channel.id)
hier ist der code teil wo ich die channel id hinzufüge
class AutoThreadDB(ezcord.DBHandler):
def __init__(self):
super().__init__("utils/data/autothread.db")
async def setup(self):
await self.exec(
"""CREATE TABLE IF NOT EXISTS channels (
id INTEGER PRIMARY KEY,
thread_name TEXT NOT NULL
)
""")
async def add_channel(self, channel_id):
print(f'DEBUG: {channel_id}')
await self.exec("INSERT OR IGNORE INTO channels (id) VALUES (?)", (channel_id,))
async def remove_channel(self, channel_id):
await self.exec("DELETE FROM channels WHERE id = ?", (channel_id,))
async def get_channel(self, channel_id):
return await self.one("SELECT id, thread_name FROM channels WHERE id = ?", (channel_id,))
async def get_all_channels(self):
return await self.all("SELECT id, thread_name FROM channels")
async def set_thread_name(self, thread_name):
await self.exec(
"INSERT OR REPLACE INTO channels (thread_name) VALUES (?)",
thread_name
)
async def get_thread_name(self, channel_id):
result = await self.get_channel(channel_id)
return result[1] if result else None
pobier mal nen wert für thread_name einzufügen zum beispiel:
await self.exec("INSERT OR IGNORE INTO channels (id, thread_name) VALUES (?, ?)", (channel_id, "test_thread"))
jz wird die eingetragen
h´jz muss ich die channel id anderes speichern wegend em modal
aber keine ahnung wie
Was soll ixch gegen out of memory machen
wenn du den fehler mal etwas mehr beschreibst dann bekommst du auch vielleicht mal ne antwort
Probably zu wenig RAM
Was willst du denn alles installieren auf dem Server?
bot.user.avatar.url```
danke
Am besten in einem try/except, damit kein Error kommt, wenn der Bot kein Bild hat.
ehmm wie kann ich noch mal wer raus finden mit was datenbanken geschreiben werden?
Wie meinst du? Datenbanken werden mit SQL geschrieben
wie mache ich das am besten wenn ich das in einem embed haben will
🤔
macht das das embed nicht automatisch`?
Hi, warum bekomme ich diesen fehler?
Traceback (most recent call last):
File "/home/container/.local/lib/python3.10/site-packages/discord/ui/modal.py", line 341, in dispatch
await value.callback(interaction)
File "/home/container/cogs/dev/xenority.py", line 133, in callback
channel = self.bot.get_channel(int(SERVER_SYSTEM["log_channel"]))
TypeError: Client.get_channel() missing 1 required positional argument: 'id'```
`channel = self.bot.get_channel(int(SERVER_SYSTEM["log_channel"]))`
ist den die variable eine id`?
wieso definierst du da nicht eine variable und nimmst die anstatt es so umständlich zu machen
meinste so
log_channel = SERVER_SYSTEM["log_channel"] channel = self.bot.get_channel(log_channel)
ja
komm tzd der fehler
Traceback (most recent call last):
File "/home/container/.local/lib/python3.10/site-packages/discord/ui/modal.py", line 341, in dispatch
await value.callback(interaction)
File "/home/container/cogs/dev/xenority.py", line 134, in callback
channel = self.bot.get_channel(log_channel)
TypeError: Client.get_channel() missing 1 required positional argument: 'id'```
und der gibt nur zahlen aus?
Ja halt die id wartze
Ignoring exception in modal <cogs.dev.xenority.verify1 object at 0x7eff5c75c6a0>:
Traceback (most recent call last):
File "/home/container/.local/lib/python3.10/site-packages/discord/ui/modal.py", line 341, in dispatch
await value.callback(interaction)
File "/home/container/cogs/dev/xenority.py", line 135, in callback
channel = self.bot.get_channel(log_channel)
TypeError: Client.get_channel() missing 1 required positional argument: 'id'```'
log_channel = SERVER_SYSTEM["log_channel"]
print(f"Log: {log_channel}")
channel = self.bot.get_channel(log_channel)
Angenommen in einem Command, da du mit ctx.bot auf den Bot zugreifst:
embed = discord.Embed(
title='Ich bin ein Titel',
description='Ich bin eine Description',
color=discord.Color.red()
)
embed.set_thumbnail(url=ctx.bot.user.avatar.url) # Bild rechts oben im Embed
embed.set_footer(text='Ich bin ein Footer', icon_url=ctx.bot.user.avatar.url) # Bild klein unten im Footer
Welches Event?
Also mit self.bot?
jep
Dann mit
embed = discord.Embed(
title='Ich bin ein Titel',
description='Ich bin eine Description',
color=discord.Color.red()
)
embed.set_thumbnail(url=self.bot.user.avatar.url) # Bild rechts oben im Embed
embed.set_footer(text='Ich bin ein Footer', icon_url=self.bot.user.avatar.url) # Bild klein unten im Footer```
ich harbeite halt an einem schutz
Absenden natürlich nicht vergessen. 😉
wenn ich ausversehen das bild läsche wird auf ein lokales bild zugegriffen
also wen der bot kein bild hat
hab das default discord logo runtergeladen
Wenn der Bot kein Bild hat, wirft er glaube das Standard-Profilbild von Discord zurück.
Ich checke das mal.
deswegen
@vast cradle Laut Docs:
- Wenn der Bot kein Profilbild hat, wird
Nonezurückgegeben. Solltest also in einer if-Abfrage das dann überprüfen.
Models are classes that are received from Discord and are not meant to be created by the user of the library. Attributes key, url. Methods def is_animated, async read, def replace, async save, def ...
@vast cradle versuchs mal so:
avatar = self.bot.user.avatar
avatar_url = ""
if avatar is None:
avatar_url = "https://archive.org/download/discordprofilepictures/discordblue.png" # Standard-Profilbild von Discord
else:
avatar_url = self.bot.user.avatar.url
embed = discord.Embed(
title='Ich bin ein Titel',
description='Ich bin eine Description',
color=discord.Color.red()
)
embed.set_thumbnail(url=avatar_url) # Bild rechts oben im Embed
embed.set_footer(text='Ich bin ein Footer', icon_url=avatar_url) # Bild klein unten im Footer
Wie kann ich das fixen? muss ich dafür den bot neu einladen?
if not message.content and not getattr(message, 'interaction_metadata', None) and not getattr(message, 'interaction', None):
/home/container/.local/lib/python3.10/site-packages/chat_exporter/construct/message.py:184: DeprecationWarning: interaction is deprecated since version 2.6, consider using interaction_metadata instead. See https://discord.com/developers/docs/change-log#userinstallable-apps-preview for more information.
if not message.content and not getattr(message, 'interaction_metadata', None) and not getattr(message, 'interaction', None):```
py-cord oder dpy?
py-cord
Guten abend meine Herren,
ich habe das Problem wenn ich meinen Discord Bot auf Pterodactyl hoste ich eine Fehlermeldung bekomme, dass er discord.commands nicht findet.
Doch normal discord / py-cord hat er. Weiß jemand woran dies liegen könnte ?
alles installiert?
discord
ezcord
python-dotenv
requests
erlcpy
chat_exporter```
py-cord fehlt
das brauchst du
ezcord arbeitet mit py-cord zusammen
beides
Perfekt
xD
jetzt bin ich gespannt was passiert
Allerdings glaube ich habe ich jetzt noch discord.py gleichzeitig installiert
Weiß jmd wie ich dies deinstallieren kann ?
das ist schlecht aber kein problem
pycord fehlt du hast discord.py xD
py-cord*
habe discord auf py-cord geändert
Super schaue ich mal
ääh wie hieß der denn noch mal
(Immer erst discord.py deinstallieren und dann erst py-cord installieren sonst muss py-cord auch wieder deinstalliert und reinstalliert werden)
😮
Muss erstmal discord.py deinstalliert bekommen 🤓
kein Terminal?
Ka was das ist
Hosting Panel
files#/.local/lib/python3.12/site-packages
Ist es dort?
dann solltest du die ordner mit . am anfang sehen können
dnn einfach mal .local und .cache löschen
ja habs über ptrerodactyl, hab nichtmal termius gebraucht
dann werden die packages neu runtergeladen
Super
hast du ne API URL?
vielen Dank
Wie meinst du ne top.gg API URL?
API access mit der URL
Erklär mal was du machen möchtest checke diese frage nicht
So
Ich will ein top.gg Voter coden aber ich finde kein Package für py-cord dazu
py-cord hat so kein Package dafür
der wars
ich habs vergessen genau
Wie soll ich es dann machen
da werden die libs gespeichert
es gibt eine lib für python selbst
also du willst mit deinem code bei top.gg voten?
Found it
definiere vote system
A simple API wrapper for top.gg written in Python. Contribute to Top-gg-Community/python-sdk development by creating an account on GitHub.
damit kannnst du votes abfragen
Zum Beispiel wenn ein User für mein bot votet soll mein bot dann eine vote Message semdem
wenn jemand gevotet hat holt sich der das und du kannst ihn dann belohnen
z.b
dann gäb es noch die alternative
jz gehts los anschnallen bitte
@tawdry leaf leise
das cringe methode
wieso fragst du das noch 😄
zu der lib ein paar examples
https://github.com/nexy7574/top.py/blob/master/examples.md
A new top.gg API wrapper, written in python. Contribute to nexy7574/top.py development by creating an account on GitHub.
immer noch cringe

was das denn für abklatsch 😂
glaube die ist besser zu verstehen als die andere
danke wenigstens einer normal
was für webhook häh
noob
sorry
google dein freund und helfer 
dann send nicht wahrlos irgendwelche links von github
weil ich es bisher nicht gebraucht hab
dimooo noob
import discord
from discord.ext import commands
import topgg
class VoterCog(commands.Cog):
def __init__(self, bot):
self.bot = bot
self.topgg_token = "YOUR_TOPGG_TOKEN"
self.webhook_auth = "YOUR_WEBHOOK_PASSWORD"
self.webhook_url = "/dblwebhook"
self.webhook_port = 5000
self.topgg_client = topgg.DBLClient(self.bot, self.topgg_token, autopost=True)
self.webhook_manager = topgg.WebhookManager(self.bot).dbl_webhook(self.webhook_url, self.webhook_auth)
self.webhook_manager.run(self.webhook_port)
@commands.Cog.listener()
async def on_dbl_vote(self, data):
user_id = int(data['user'])
user = await self.bot.fetch_user(user_id)
channel_id = 123456789
channel = self.bot.get_channel(channel_id)
embed = discord.Embed(
title="Neuer Vote!",
description=f"{user.mention} hat gerade für den Bot gestimmt!",
color=discord.Color.green()
)
embed.set_thumbnail(url=user.avatar.url)
embed.add_field(name="Danke!", value="Deine Unterstützung bedeutet uns sehr viel!", inline=False)
await channel.send(embed=embed)
def setup(bot):
bot.add_cog(VoterCog(bot))
@limpid wolf so
das sind so das was ich mir mal angeschaut hab
es kracht
try it :)
habs mir zwar mal angeschaut
und nein absolut nicht so hab ich das definitiv nicht beschrieben
aber halt noch nicht benuzt
du importierst ja das topgg package aber sowas brauchst du dafür doch gar nicht?
mein bot ist auch noch nicht öffentlich
Was dann
.
schau dir an wie du einen webserver machst.
da kannst du fastapi z.b. nutzen

fehlt nur die warnung das man gehirnzellen verliert xD
@fierce dove probier mal in google in die suche top.gg webhook einzugeben 🤔
Ne
@limpid wolf
import discord
from discord.ext import commands
import aiohttp
from aiohttp import web
import asyncio
class VoterCog(commands.Cog):
def __init__(self, bot):
self.bot = bot
self.webhook_auth = "meinSicheresWebhookPasswort123!"
self.webhook_url = "/dblwebhook"
self.webhook_port = 5000
self.bot.loop.create_task(self.start_webhook())
async def start_webhook(self):
app = web.Application()
app.router.add_post(self.webhook_url, self.handle_vote)
runner = web.AppRunner(app)
await runner.setup()
site = web.TCPSite(runner, '0.0.0.0', self.webhook_port)
await site.start()
print(f"Webhook läuft auf Port {self.webhook_port}")
async def handle_vote(self, request):
if request.headers.get('Authorization') != self.webhook_auth:
return web.Response(status=401)
data = await request.json()
user_id = int(data['user'])
await self.on_vote(user_id)
return web.Response(status=200)
async def on_vote(self, user_id):
user = await self.bot.fetch_user(user_id)
channel_id = 123456789 # Ersetzen Sie dies mit der ID Ihres Ankündigungskanals
channel = self.bot.get_channel(channel_id)
embed = discord.Embed(
title="Neuer Vote!",
description=f"{user.mention} hat gerade für den Bot gestimmt!",
color=discord.Color.green()
)
embed.set_thumbnail(url=user.avatar.url)
embed.add_field(name="Danke!", value="Deine Unterstützung bedeutet uns sehr viel!", inline=False)
await channel.send(embed=embed)
def setup(bot):
bot.add_cog(VoterCog(bot))
dann klick mal auf den ersten link
einf sich selber siezen
versuch es doch mal selber und ohne chatgpt
Ist kein Chat gpt
Jo ich darf das
Schade 🙂
nur virus wird getestet
ich kriege es irgendwie nicht hin die bots aus dem guild count zu holen
🤔
Jo
wie zählst du denn momentan ?
was bedeutet der Error oder kann ich den wegdenken
user_count = guild.member_count
bot_count = member.bot
filtered_member = user_count - bot_count```
warum
oder muss es member.bot_count sein?
umständlich 🤔
das wäre die nächste
gibt es nicht
ääh wie mach ichs einfacher
ich denke mal wiedcer zu kompliziert
for schleife ?
helfe dir für kekse 🙂
ne
kriege es nicht hin
Was versuchst?
beim membercount die bots zu filtern
Beispiel?
user_count = guild.member_count
filtered_member = [user_count for user_count in user_count if not member.bot]```
{sum(not member.bot for member in ctx.guild.members)
du hast da desselbe für das selbe in dasselbe stehen
filtered_member? Ich verstehe nur Bahnhof, was du versuchst
ups
das sind die user die da nicht bots sind
Du willst alle User zählen außer die Bots?
ja
das hat er so geschrieben ja xD
das versuche ich grade
was gibt es da zu versuchen 😂
Global zählen oder nur für eine spezifische Guild?
nur für den guild wo der user joint
Dann mal das von Lucky testen..
des geht 🙂
Je nachdem, wo er es usen will 😄
muss man nicht testen xD
also das umschreiben mein ich
weil ich hab kein ctx
was denn dann
Lass ihn. Er weiß es ja jz xD
was heißt der error der kommt immer wenn ich den bot bei anderen servern benutze auf den er nicht ist
@tawdry leaf haha
So funktioniert nicht replace...
ist kein error von meinen code
lol
wie mache ich nochmal die guild id in der main mit debug_guild nh?
bitte was
=[ID]
so wie in commands
import discord
from discord.ext import commands
import re
class Auto(commands.Cog):
def __init__(self, bot):
self.bot = bot
@commands.Cog.listener()
async def on_message(message):
if re.search("(?P<url>https://[^\s]+)", message.content):
await message.delete()
await message.author.send("Bitte sende kein Links rein")
def setup(bot):
bot.add_cog(Auto(bot))
könnte mit bitte einer sagen warum der code nicht geht checke es nicht
Was benutzt man in einer Klasse immer in einer function?
ah ja merke es grad selber upsss
@last depot bei mir ist das auch so
Wie meinst dat?
Der Server von cookiehosting ist immer suspendiert und muss den immer erneuern mit /extendet obwohl ich booster bin
Ich auch
Ich hatte letzten schon das Problem und musste /extend verwenden obwohl man als booster eigentlich nicht verlängern muss aber 3 Tage später war wieder das selbe Problem und ich musste wieder /extend verwenden obwohl ich booster bin und ich weiß nicht wie ich das beheben kann so das ich nicht mehr /extend verwenden muss weil das war ja auch eine Zeit lang alles perfekt aber momentan habe ich dieses Problem halt
bei mir auch
jap
WIe kann ich den Pyocrd master in meine requirments reinamchen
@next echo ich kümmer mich drum, dachte erst das wäre ein einmaliges problem gewesen
sorry für die umstände
@thick haven
Füge die folgende Zeile zu deiner requirements.txt-Datei hinzu, um den Pycord Master-Branch zu installieren.
py-cord @ git+https://github.com/Pycord-Development/pycord```
Gibt es irgendwo ein Reaktion Role Tutorial für py-cord?
glaub nicht
gtibt verschiedene versionen von reaktion role
klappt nicht
er schickt mir immer noch alles zusammen
ungtefiltert
#----------------------------------Imports----------------------------------
import json
import discord
import os
import pytz
from discord.ext import commands
from datetime import datetime
#----------------------------------Klasse----------------------------------
class Welcome(commands.Cog):
def __init__(self, bot):
# ----------------------------------Variablen für Cog----------------------------------
self.bot = bot
self.channel = 1277705163921948752
self.thumpnail_url="Hier bild url einfügen"
self.image_url = "Hier bild url einfügen"
# ----------------------------------Wilkommens Text----------------------------------
@commands.Cog.listener()
async def on_member_join(self,member):
guild = member.guild
user_count = guild.member_count
#filtered_member = [user_count for user_count in user_count if not member.bot]
new_filtered_member = {sum(not member.bot for member in guild.members)}
avatar = self.bot.user.avatar
avatar_url = ""
created_time = member.created_at
if created_time is not None:
# Formatierung der Datums- und Zeitangabe in ein lesbares Format
created_formatted_time = created_time.strftime("%d.%m.%Y um %H:%M:%S")
created_relative_time = discord.utils.format_dt(created_time, style='R')
joined_time = member.joined_at # Das Datum und die Uhrzeit des Serverbeitritts
if joined_time is not None:
# Formatierung der Datums- und Zeitangabe in ein lesbares Format
formatted_time = joined_time.strftime("%d.%m.%Y um %H:%M:%S")
relative_time = discord.utils.format_dt(joined_time, style='R')
if avatar is None:
avatar_url = "https://archive.org/download/discordprofilepictures/discordblue.png" # Standard-Profilbild von Discord
else:
avatar_url = self.bot.user.avatar.url
embed = discord.Embed(
title=f"👋Wilkommen auf dem Server: {guild.name}",
description=f"Wilkommen auf {guild.name}!\n"
f"du bist das {new_filtered_member}. Mitglied",
color=discord.Color.red()
)
embed.add_field(name="Name:",value=member.name)
embed.add_field(name="Ping:",value=member.mention)
embed.add_field(name="ID:",value=member.id)
embed.add_field(name="Server beigetreten:",value=f"{formatted_time}, {relative_time}")
embed.add_field(name="Discord Beigetreten:",value=f"{created_formatted_time}, {created_relative_time}")
embed.add_field(name="Mitglieder:",value=user_count)
embed.set_author(name=self.bot.user.name,icon_url=avatar_url)
embed.set_footer(text="©2024 Botname", icon_url=avatar_url)
# embed.set_thumbnail(url=self.thumpnail)
#embed.set_image(url=self.image_url)
channel = self.bot.get_channel(self.channel)
await channel.send(embed=embed)
#----------------------------------Cog Setup----------------------------------
def setup(bot):
bot.add_cog(Welcome(bot))```
das ist der gesammtre code
hast du die intents dafür an
Wilkommen auf Planetbot Development!
du bist das {2}. Mitglied
kannst du mir erklären warum die geschweiften klammern noch da sind
ich verstehs nicht
weil du da geschweifte klammern noch rum hast:
ah ups
weil es so im code wohl steht
@tawdry leaf Ja dann wie tf installiere ich das$
timeout 😮
?
also installieren kann man des im terminal mit pip install
und dann eben dem entsprechenden modul das dort steht
Also jeden einzelnen mit pip install und dann da z.B. Discord und das Andere da
pip install ezcord
pip install py-cord
Ah
.
Ja sorry war da noch am schreiben
alles gut
Aha

und nun
Ja warte, mein Wlan ist nicht auf steroiden sondern nur Toastbrot
😐
ka was du an code hast 🙂
Hab das Tutorial ja fertig und dann habe ich versucht die Cmmds und so systehme die alle noch in main waren da rüber in ne cog zu tun aber dann hat es meinen kompletten Code gefickt und das Backup hat auch nicht funktioniert
Wo mach ich denn jetzt noch den rest hin? Cogs und die Base habe ich schon.
was steht denn in der requirements.txt
sowas
dann installiere doch alles daraus dann müsste es doch gehen
Ok aber ich habe das gitignore, pre commit, readme und requirements noch ned im Projekt.
wozu brauchst du das denn
Falscher Interpreter ausgewählt?
?
PyCharm benutzt eine VENV
du hast denke ich mal discord.py auch installiert?
sieht danach aus
aber nicht mit py-cord zusammen..
auch schon bemerkt xD
dann wäre wohl ezcord auch rot
mach mal pip freeze und schicke des
im terminal
Ja? also das von vorhin. das discord ding und es hat es installiert
du brauchst nur das was in der requirements.txt steht
aiocache==0.12.2
aiodns==2.0.0
aiohappyeyeballs==2.4.0
aiohttp==3.10.5
aiosignal==1.3.1
aiosqlite==0.20.0
async-timeout==3.0.1
attrs==24.2.0
cffi==1.17.0
colorama==0.4.6
discord==2.3.2
discord.py==2.4.0
django-commands==0.7
ezcord==0.6.5
frozenlist==1.4.1
idna==3.8
multidict==6.0.5
pycares==4.4.0
pycparser==2.22
python-dotenv==1.0.1
typing_extensions==4.12.2
yarl==1.9.4
Ja das hab ich ja installiert
@fossil vortex
⚠️ Es sollte nur eine Discord Library installiert sein
discord==2.3.2
discord.py==2.4.0```
*Ich habe [diese Nachricht](#1019974414487535736 message) geprüft.*
benutzt du dpy oder py-cord?
er benutzt den github code von timo
Ich sehe gerade py-cord Code mit dpy was natürlich nicht geht....
geb mal das ein:
pip uninstall discord
pip uninstall discord.py
Ja, hab ich.
Beides hat funktioniert.
jetzt einfach py-cord installieren
hat er bereits
nope
hier ist kein Py-Cord
hm habs ihn gesagt er meinte er hats xD
@fossil vortex pip install py-cord
Das hatte ich aber gemacht.
Oh warte ich habe gerade hoch gescrollt und ich hatte typo °-°
😐
Jetzt nur noch das:
pip install utils
?
nein
heb die chere
doch doch
Ja oder nein?
nein
Ja was dann?
War in der Template
perfekt einf mal nein schreiben oder 
Im welchem Template?
um aus einer datei eine variable in einer anderen zu benutzen
Timos template
😄
lol
NOOB
stark
lol
machst du gut

also
Dann einfach ezcord installieren
hat er bereits kekw
ja wo ist denn deine dab datei xD

nimm es raus du brauchst des da nicht
Ok
Das auch?
schau mal richtig hin....
Weil jetzt wurde das zum error
Ich hab es gesehen, das es gebraucht wird
du hast gesagt er soll ezcord installieren samma
hast wohl nd gesehen das es nicht rot ist ^^
?
Wait nein das geht ned weil die variabel noch gebracht wird
richtig
.
Ah hab das übersehen xD
was ist denn in deinem utils ordner
kannst du mal from ezcord.utils import dab machen?
xD
um ok
ist immernoch nix von ezcord
du weißt schon was das macht?
nö
dann schreib doch bitte auch nix
was magst du mit dem bild mir denn sagen
das bild hat nix mit ezcord am hut
das ist von hier?
Ja
from utils(utils heißt der ordner) import dab (dab ist die funktion die er braucht)
er macht irgendwas wieder xD
Ka im Tutorial ist das so
Desswegen bin ich coding damals gequittet als ich da schonmal angefangen habe
wow
Ich hab garnix gemacht °-°
ganz ruhig
Nur ein neues Projekt erstellt
Der punkt ist, es ist alles sehr einfach zu fixen ;3
Tja dann sag mal
ja
einf wissen was man tut xD

Ich wundere mich über was anderes eigentlich eher.
Das ist auch nicht um unhöflich zu sein oder anderes aber kennst du die Basics von Python?
ich habe das problem wenn ich den code runterlade geht er bei mir schon xD
Um wie meinst du das? Ich habe halt erst vorgestern damit angefangen.
dann würde er bestimmt den code auch kopieren ^^
Also hast du sozusagen keine Ahnung was du tust?
Ey ich mach einfach die ganze Tuto-Reihe nochmal
richtig
Korrekt 
sonst wäre er wohl nicht hier 😄
Blitzmerker 
was hast du nun vor um dein code zu fixen
Em
Ich würde
Keine Ahnunh dawg
Den cmd darunter der die variabel benutzt und die variabel löschen
probier mal das hier
from utils import database as dab
also einfach das statt das andere import?
das from damit ersetzen meine ich
ctrl + v?
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
Heute klären wir eine Frage, die ...
ja
hm und was steht in deiner init.py
achso ja wenn du die datei in der venv hast ist es logisch das es nicht geht 😄
wie kann ich dafür sorgen das ein embed auch nach einem neustart des bots noch Klappt
meinst du die buttons vom embed?
ja
ich führe ein mal einen befeh aus und dann wird ein embed mit dem knopf geschickt der immer wenn der bot läuft klappen soll
kannst du den code reinschicken?
hab noch keinen bastel grade einen moment
Das ist für das Freischalten der slash cmds oder?
es als view beim Bot hinzufügen, bei der View Classe Timeout=None setzen und eine nicht wiederholende custom ID bei dem Button hinzufügen
jain
Damit ist es fest bei einem Server
wenn du das komplett enfernst wird der Command public
Ok
import discord
from discord import slash_command, InteractionContextType, IntegrationType, Embed, Colour, Option
from discord.ext import commands
ROLE_ID = 1278437721207083190
class VerifyView(discord.ui.View):
def __init__(self):
super().__init__(timeout=None)
@discord.ui.button(label="Verify", style=discord.ButtonStyle.green, custom_id="role_button")
async def role_button(self, button: discord.ui.Button, interaction: discord.Interaction):
role = interaction.guild.get_role(ROLE_ID)
if role:
if role in interaction.user.roles:
await interaction.response.send_message("Du hast diese Rolle bereits.", ephemeral=True)
else:
await interaction.user.add_roles(role)
await interaction.response.send_message(f"Die Rolle {role.name} wurde dir zugewiesen!", ephemeral=True)
else:
await interaction.response.send_message("Die Rolle konnte nicht gefunden werden.", ephemeral=True)
class Verify(commands.Cog):
def __init__(self, bot):
self.bot = bot
@slash_command()
async def verify(self, ctx, kanal: Option(discord.TextChannel)):
Kanal = kanal
verify_embed_send = Embed(title="Embed Gesendet", description="Das Verify Embed wurde gesendet",
color=Colour.green())
await ctx.respond(embed=verify_embed_send,ephemeral=True)
verify_embed = Embed(title="Verifiziere Dich",
description="um dem Server vollständig beizutreten Drücke Unten den Knopf um dich zu Verifizieren",
color=Colour.blue())
await Kanal.send(embed=verify_embed,view=VerifyView())
def setup(bot):
bot.add_cog(Verify(bot))```
der button klappt leider nach einenm Bot Neustart nicht
wie behebe ich das?
Du musst noch dem Button in einem on_ready event in deinem cog hinzufügen
ääh was muss da rein?
also wie muss ich das ins on_ready schreiben
async def on_ready(self):
self.bot.add_view(DeinView())
DeinView musst du mit deinem View austauschen
ich müsste das view auch in einen anderen teil importieren können oder?
meinst du in ein seperates file?
hab halt einen cog wo nur die Events drinn sind
ja sollte gehen
also halt
from cogs.verify import VerifyView
pobiere es aus bin mir da nicht sicher, aber sollte glaube ich gehen
nein
wenn du client.run da hast dann schon...
du sagst du weiß nicht was die funktion macht jz sagst du die muss man von der main sehen 
ich habs bot.run genannt
könnte es aber so gesehen auch name.run nennen
Das ist am ende eh egal
Ich würde eher bei views ein extra Ordner benutzen aber das ist deine Entscheidung am Ende
das habe ich vorhin geschrieben xd
ich würde die einfach unten bei dem cog dazu schreiben wieso so umständlich
dann schreib nd so ein quak
?
.
Es ist nicht umständlich sondern eine bessere Struktur für dein Code
Man kann auch alles in eine Datei schreiben wenn man möchte
halllo lute ich hab ein error es wird nicht erkannt
class VerifyDB:
def __init__(self):
self.db_path = "utils/data/Verify.db"
async def setup(self):
"""Execute setup queries."""
async with aiosqlite.connect(self.db_path) as db:
await db.execute(
"""CREATE TABLE IF NOT EXISTS verify (
guild_id INTEGER PRIMARY KEY,
role_id INTEGER,
channel_id INTEGER,
)"""
)
await db.commit()
async def set_verify_role(self, guild_id: int, role_id: int):
"""Set the verify role for a guild."""
async with aiosqlite.connect(self.db_path) as db:
await db.execute(
"""INSERT INTO verify (guild_id, role_id)
VALUES (?, ?)
ON CONFLICT(guild_id) DO UPDATE SET role_id = ?""",
(guild_id, role_id, role_id)
)
await db.commit()
async def set_verify_channel(self, guild_id: int, channel_id: int):
"""Set the verify channel for a guild."""
async with aiosqlite.connect(self.db_path) as db:
await db.execute(
"""INSERT INTO verify (guild_id, channel_id)
VALUES (?, ?)
ON CONFLICT(guild_id) DO UPDATE SET channel_id = ?""",
(guild_id, channel_id, channel_id)
)
await db.commit()```
@ruby sparrow hast du VerifyDB in deine init Datei
oh vergesen
@ruby sparrow gehts
lol
bei community und bei professional
weis jemand wie man im code die Farbe in den code blöcken ändern kann, meine sowas:
[2;31mHallo[0m
Kann man auf dem cookie hosting server eine Datenbank erstellen?
Nope.
was soll ich machen wenn das ui==0.1.4 nicht gefunden wird?
Weil wenn ich auf die install seite geh wird das auch nicht mehr gelistet
In was für nem context?
Also wofür brauchst du das?
setzte aktuell einen server auf aber wenn ich das installieren will (ist für den discord bot) dann kommt immer dieser error:
ERROR: Could not find a version that satisfies the requirement ui==0.1.4 (from versions: none)ERROR: Could not find a version that satisfies the requirement ui==0.1.4 (from versions: none)
ERROR: No matching distribution found for ui==0.1.4
ist zum erstellen der select menüs und so
Das ist doch normalerweise alles in den gängigen libs drin?
jetzt geht es
Aber er reagiert auf keine befehle mehr
Egal welchen ich ausführe es kommt The application did not respond
Er ist an, die status task läuft auch
Ka sorry programmiere keine discord Bots mehr 😅
Helfe nur wenn es offensichtliche Probleme gibt oder allgemeinere fragen 🙂
Würde einfach die packages nochmal neu installieren oder das rückgängig machen was du geändert hast, ging ja anscheinend schon mal
Geibt es ne möglichkeit beim cookie hosting probramm ne datenbank zu bekommen?
sqlite kannst du dort verwenden
oder deine datenbank wird wo anders gehostet dann kannst du natürlich auch andere verwenden wie sqlite
*postgres war in gedanken lol
Also es geht jetzt (hab den bot jetzt bei cookie hosting und die db wo anders) aber die commands und evnts funktionieren nicht was könnte falsch sein?
cogs werden evtl nicht geladen?
doch die werden geladen hab extra nachgeschaut
Auch commands und events in der main gehen nicht
Das einzige was geht ist das on_ready
evtl doppelt gestartet?
warte ich mach in mal aus
Ne das war nicht das problem, hab alles mal ausgemacht
Der reagiert nicht auf die commands ich bekomm dann immer von discord das die interaction fehlgeschlagen ist
aber wenn ich den local hoste ist alles gut
Ich weiß nicht warum
Ich hab das rätzel jetzt gelöst es ist wegen diesen 2 funktionen aber ich weiß nicht warum
'''
Adds all existing Invite links to a database
Info:
- Required for the Invite Leaderboard
'''
@classmethod
async def collects_invitation_links(cls):
for guild in bot.guilds:
for invite in await guild.invites():
if invite.inviter.bot:
pass
else:
await DatabaseUpdates.manage_leaderboard_invite_list(guild_id = guild.id, user_id = invite.inviter.id, invite_code = invite.code, uses = invite.uses)
error
@commands.Cog.listener()
async def on_ready(self):
view = View(timeout=None)
print(f'Logged in as: {bot.user.name}')
print(f'With ID: {bot.user.id}')
self.bot.loop.create_task(status_task())
print("┏━━━┓ ┏━━━┓ ┏┓ ┏┓ ┏━━┓ ┏━━━┓ ┏━━┓")
print("┃┏━┓┃ ┃┏━┓┃ ┃┃ ┃┃ ┗┫┣┛ ┗┓┏┓┃ ┗┫┣┛")
print("┃┗━━┓ ┃┃ ┃┃ ┃┃ ┃┃ ┃┃ ┃┃┃┃ ┃┃")
print("┗━━┓┃ ┃┗━┛┃ ┃┃ ┃┃ ┃┃ ┃┃┃┃ ┃┃")
print("┃┗━┛┃ ┗━━┓┃ ┃┗━┛┃ ┏┫┣┓ ┏┛┗┛┃ ┏┫┣┓")
print("┗━━━┛ ┗┛ ┗━━━┛ ┗━━┛ ┗━━━┛ ┗━━┛")
self.bot.add_view(HelpMenuSelect())
view.add_item(CancelButton(system=None))
self.bot.add_view(view)
await Main.create_db_table()
await LeaderboardSystem.collects_invitation_links()
await LeaderboardSystem.check_expired_invites()
Hab sie so aufgrufen
Das war ja die ganze zeit das problem es gibt keinen
Das problem äußert sich so dass dann kein einziger command oder event mehr geht
Vielleicht war irgendwo in den beiden Funktionen ein deadlock
Wirft auch keine Fehler und nichts geht mehr
Da hilft nur debuggen wenn die Funktionen aufgerufen werden
Meine commands werden nicht auf dem server angezeigt?

Naja, und Code, Error und mehr Problembeschreibung kann man da wenig helfen
Gibt keine errors
Ich habe meinen Token geleakt °-°
uff
Guck dir maybe mal die unterstrichenen Sachen an
Einfach neu generieren
Ja ka bin noch neu
Kannst trotzdem mal machen ^^
pobier mal bei discord.Bot debug_guild anzugeben, weil sonst werden die commands global erstellt und dass dauert meistens
Ok und dann da die guild Id?
also ```
discord.Bot(
intents=intents,
debug_guild="Deine Guild ID"
)
ja
hast du die intents auch in discord dev an ?
das ist nicht es wegen

Kann schon sein...
da würde ein fehler kommen, wenn ers ausführt
hast du die intents an ?
eh
guck mal nach
Yup
das ist nicht wegen den intents da würde ein Fehler im Termianl kommen
ist ja
debug_guilds=[deine id],```
@fossil vortex es geht so
Hab ich schon
hab ich doch reingeschickt
nein muss so aus sehen debug_guilds=[1266091129963806913],
du hast die [] vergesen
Stark @dapper ginkgo
.
Kein error mehr$
geht das jz ?
zeig mal zeig dein discord dev
oder damit?
nee damit ich alles okay das geht doch um das Event oder?
send mal dein ganze code hier rein ohne bild
das ist nicht es wegen
import discord
from discord.ext import commands
from discord.commands import slash_command
class greet(commands.cog):
def __init__(self, bot):
self.bot = bot
@slash_command()
async def dashboard(self, ctx):
await ctx.respond("Syntax.Error")
@commands.Cog.listener()
async def on_member_join(self, member):
embed = discord.Embed(
title = "Welcome",
description = f"Welcome to :palm_tree **##########** {member.mention}",
color=discord.Color.orange(),
)
embed.add_field(name="Feel free to explore our server, for any assistance head to #1233773070603386910 and make sure to read our #1254456012317134949 before joining in our sessions #1233773100114645082", inline=False)
embed.set_thumbnail(url=member.avatar.url)
embed.add_field(name="Current members:", value=f"{len(member.guild.members)}", inline=False)
embed.set_footer(text=f"member joined at: {member.joined_at}")
channel = await self.bot.fetch_channel(1251997777861414932)
print("Executed greet")
def setup(bot):
bot.add_cog(greet(bot))
wo send du das embed
oh stimmt
Ok mal sehen ob das jetzt funktioniert
und
kann joinen, wenn du mir nh einladung schickst
Nein danke.
@fossil vortex willst du call?
Hat ned funktioniert
