#Allgemeine Hilfe
1 messages · Page 70 of 1
@thick haven This error might happen in case the name of your file is the same as the name of the package you connect. Just rename your file, and it will work
also dropdowns.py umnenn oder wie
I'm upgrading an application from Django 1.11.25 (Python 2.6) to Django 3.1.3 (Python 3.8.5) and, when I run manage.py makemigrations, I receive this message:
File "/home/eduardo/projdevs/upgr...
Kannst ja da mal lesen was die so schreiben zu den error
das macht null sinn
gefixt
Welche Videos von CodingKeks muss ich geschaut haben, um den Bot von ElevenLabs aufzubauen. Ich habe im Video und im Code nicht gesehen wo er den Token des Bots hin getan hat. Kann mir wer auf die Sprünge helfen geht um das Video:
Mein Discord Server
► https://discord.gg/zfvbjTEzv6
Links aus diesem Video
ElevenLabs ► https://elevenlabs.io/
▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬
Mein Hosting* ► https://tidd.ly/3gJufg6
Code auf Github ► https://github.com/tibue99/tutorial-bot
▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬
Inhalt 📚
Heute nutzen wir die ElevenLabs Text-to-Speech API, die MP3-Dateien aus Discord-...
Mein Discord Server
► https://discord.gg/zfvbjTEzv6
Discord Developer Portal
► https://discord.com/developers/applications
Downloads
Python ► https://www.python.org/downloads/
PyCharm ► https://www.jetbrains.com/de-de/pycharm/
Pycord
Docs ► https://docs.pycord.dev/
Guide ► https://guide.pycord.dev/introduction/
Discord Server ► https://discor...
das da
achso oke danke 🙂
okay, habe jetzt alles gemacht aber mir ist es noch immer nicht klar vo im code der bot token angegeben wird vom eleven labs video, ich habe noch gesehen, dass es ein video zu cogs gibt soll ich das auch schauen?
der bot token wird normaler weise in den run configurations bzw in einer .env datei gespeichert
wenn du pycharm benutzt kannst du auch oben wo du denn bot startest neben dran auf das "main" zu drücken, dann kannst du die konfiguration ändern und runter gehen zu "environment variablen" und dort ein neues paar also z.B. "token" und dann dein token einfügen
ja ich nutze code oss, kann man nicht einfach unten den bot.run verwenden?
ja kann man
ja ist nicht so sicher aber ich nutze den bot nur mit so 5 engen freunden, sollte nix passieren
jedoch ist es good practice das man das nicht in das main.py wegen sicherheit, aber eig musst du dir hier dir keine sorgen machen da er ja nicht in grossen server ist
wenn ich den bot starten will sagt er mir, dass der bot nicht defined ist, oben habe ich ihn aber defined mit self.bot =bot muss ich noch bot=discord.bot() schreiben oder woran liegt das
kannst du kurz den ganzen code schicken?
mit drei ```
wie hast du die drei ` da so hingeschrieben
mit backslash
\´´´
import io
import discord
import elevenlabs
from discord.commands import slash_command, option
from discord.ext import commands
elevenlabs.set_api_key("") #API-Key
CHOICES = [
discord.OptionChoice(name=voice.name, value=voice.voice_id) for voice in elevenlabs.voices()
if voice.category != "premade"
][:25]
class ElevenLabs(commands.Cog):
def __init__(self, bot):
self.bot = bot
@slash_command()
@option("text")
@option("voice", choices=CHOICES)
async def voice(self, ctx, text: str, voice: str):
await ctx.defer()
output = elevenlabs.generate(
text=text,
voice=elevenlabs.Voice(
voice_id=voice,
settings=elevenlabs.VoiceSettings(
stability=0.71, similarity_boost=0.5, style=0.0, use_speaker_boost=True
),
),
model="eleven_multilingual_v2",
)
await ctx.respond(
file=discord.File(io.BytesIO(output), filename="voice.mp3")
)
def setup(bot):
bot.add_cog(ElevenLabs(bot))
bot.run('') #Bot Token
``````
ja du musst bot definieren
ganz oben z.b. bot = commands.Bot()
warte wie sieht seine code struktur aus
ist die vom video lol
okay
nein mach mal ein bild von dem ordner die du hast
wollt grade sagen lmao
hä aber es hat ja bot.run
jo warte
ja weil er dachte safe das kommt da rein
dann musst du noch
benutzt er ezcord oder py-cord
wie mache ich das gibt es ein video dazu
ja
pycord
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...
glaube hier ist es drin
wie meinst du
main.py ist für das definieren des bots, das starten und das laden der cogs
man kann eig alles ins main.py schreiben, aber cogs machen es übersichtlicher
hab letzte woche angefangen mit python und daher habe ich noch nicht so viel wissen, sorry falls ich aufdringlich bin oder so
ja cogs habe ich schon mal gehört
also muss ich noch alle cogs definieren oder wie?
ja genau das mit dem ElevenLabs dass du da geschrieben hast ist ein cog
also der ganze code?
das hier ist der cog
achso ja oben
import io
import discord
import elevenlabs
from discord.commands import slash_command, option
from discord.ext import commands
elevenlabs.set_api_key("") # hier den api key einfügen
CHOICES = [
discord.OptionChoice(name=voice.name, value=voice.voice_id) for voice in elevenlabs.voices()
if voice.category != "premade"
][:25]
class ElevenLabs(commands.Cog):
def __init__(self, bot):
self.bot = bot
@slash_command()
@option("text")
@option("voice", choices=CHOICES)
async def voice(self, ctx, text: str, voice: str):
await ctx.defer()
output = elevenlabs.generate(
text=text,
voice=elevenlabs.Voice(
voice_id=voice,
settings=elevenlabs.VoiceSettings(
stability=0.71, similarity_boost=0.5, style=0.0, use_speaker_boost=True
),
),
model="eleven_multilingual_v2",
)
await ctx.respond(
file=discord.File(io.BytesIO(output), filename="voice.mp3")
)
def setup(bot):
bot.add_cog(ElevenLabs(bot))
``` so müsste er eig aussehen
weil bot.run() gibt es nur im main.py
import discord
import os
from dotenv import load_dotenv
intents = discord.Intents.default()
bot = discord.Bot(
intents=intents,
debug_guilds=[123456789] # hier server id einfügen
)
@bot.event
async def on_ready():
print(f"{bot.user} ist online")
if __name__ == "__main__":
for filename in os.listdir("cogs"):
if filename.endswith(".py"):
bot.load_extension(f"cogs.{filename[:-3]}")
load_dotenv()
bot.run(os.getenv("TOKEN"))```
@thin silo
okay die erstelle ich einfach und dann kann ich den bot ausführen?
noch nicht ganz aber ja
oke ich probiere es mal
wenn du gemacht hast mach mal ein screenshot von deiner ordner struktur
du brauchst dann noch die .env datei, vergiss die nicht
okay mache ich
die env datei?
die ist dann TOKEN="DEINTOKEN"
es sollte ungefähr so ausehen
main.py
.env
cogs
- ElevenLabs.py```
ohne strings
ach so ja stimmt
also TOKEN=DEINTOKEN
ja
bot heisst jack, habe die .env datei, die main.py datei und der env ordner ist einfach meine python umgebung
wenn ich den bot jetzt starte passiert nichts
ich habe das jetzt in der main
und wenn ich den code hier ausführe passiert nichts, der bot bleibt offline
was ich auch nict verstehe ist, wo im code denn die main.py angesprochen wird, über das cog oder so?
also du führst schon die main.py aus?
warum hast du 2 mal env ?
env ist das virtual py env nehme ich an
nehme ich auch mal an
normaler weise heisst das venv aber ka
man kann doch die py env so nennen wir man will lol
ne habe die jack.py ausgeführt
wie meinst
achsoo
.
der muss in den cogs ordner
dotenv ist eig vorinstalliert
musste manuell machen
geht jetzt
noch ne kurze frage, kann man es machen, dass nur bestimmte leute mit bestimmten rechten die befehle ausführen können
Dann schreibst du dir eine Check funktion und rufst sie auf
mein nächstes ziel ist es den bot mit dem radio tutorial zu verbinden und somit, die mp3's im voice channel aufzuschreiben, danke für die aufklärung mit den cogs etc um es besser zu verstehen schaue ich später noch die video reihe fertig
check funktion oke ich probiere es mal
Das wäre wie du es machen könntest
import discord
from discord.ext import commands
from discord.commands import slash_command
from datetime import datetime
def check_role(role_id):
def predicate(ctx):
role = ctx.guild.get_role(role_id)
if role and role in ctx.author.roles:
return True
return False
return commands.check(predicate)
class TestoCommando(commands.Cog):
def __init__(self, bot: discord.Bot):
self.bot = bot
@slash_command(description="hello")
@check_role(1163282025483087884)
async def testomesto(self, ctx: discord.ApplicationContext):
await ctx.respond(f"Hey {ctx.author.mention}")
def setup(bot: discord.Bot):
bot.add_cog(TestoCommando(bot))
das tue ich auch in den cog ordner?
Genau, einfach über deine main class packen und aufrufen, wo du es willst. Kannst es auch in eine config.py packen und importieren und dann aufrufen. Ist auch möglich
also in meinem main code oder als eigene file im cog ordner
So müsstest du es schreiben, wenn du es in eine extra file machst
import discord
from discord.ext import commands
def check_role(role_id):
def predicate(ctx):
role = ctx.guild.get_role(role_id)
if role and role in ctx.author.roles:
return True
return False
return commands.check(predicate)
Moin Moin wollte mal fragen ob nicht geschlossene Db Connections für erhöhten thread und cpu verbrauch verantwortlich sein können
frage wenn ich bei ezcord 2 abfragen habe wie kann ich es machen das die aus 2 verschiedenen dbs geht
Soweit ich weiß, ja, aber ich bin mir nicht sicher
hey dankeschön für deine hilfe, sobald mein bot fertig ist will ich anfangen richtig python zu lernen, bisher hat es mir richtig spass gemacht 
Ich helfe immer gern und viel spaß dabei
@solid ingot brauch ich für das sprachen ding von ezcord python 3.12? Weil das haben manchge gesagt
nein, aber es geht auch mit python 3.12
aber es sollte auch mit 3.11 gehen?
ja
okay geht aber nicht xD
das ist jetzt nicht besonders konkret
naja ich hab die .yaml erstellt dort meine sachen rein und auch in der main.py zum bot hionzugefügt. Trotzdem werden die descriptions der commands nicht angezeigt
du musst dann die abfrage in 2 verschiedenen klassen machen, oder in der einen klasse die andere benutzen. ohne einen beispielcode lässt sich das aber schwer sagen
code und datei?
@solid ingot
self.localize_commands muss hinter load_cogs
wurde schon geändert, geht aber noch immer nicht
welche sprache hat der discord client?
Also der afk befehl geht jetzt aber die ganzen commands in der command group info nicht
okay gut, aber welche sprache hat denn jetzt der discord client? xD
Wie meinste, ich hab meine Sprache auf Deutsch
ja das meinte ich
dann brächte ich einmal den code von der ganzen command group mit allen commands
kann ich dir per dm schicken
hab das grade so
class afkDB(ezcord.DBHandler):
def __init__(self):
super().__init__("haupt.db")
async def setup(self):
await self.execute(
"""CREATE TABLE IF NOT EXISTS afk(
user_id INTEGER PRIMARY KEY,
afk_status TEXT,
datum TEXT
)"""
)
async def get_mode(self):
return await self.one("SELECT mode FROM dev") or ""
async def get_afk(self, user_id):
result = await self.one("SELECT afk_status, datum FROM afk WHERE user_id = ?", user_id)
return result if result else None
async def set_afk(self, user_id, afk_status, datum):
await self.execute(
"INSERT OR REPLACE INTO afk (user_id, afk_status, datum) VALUES (?, ?, ?)",
(user_id, afk_status, datum)
)
async def remove_afk(self, user_id):
await self.execute("DELETE FROM afk WHERE user_id = ?", user_id)
db = afkDB()
class modeDB(ezcord.DBHandler):
def __init__(self):
super().__init__("haupt.db")
async def setup(self):
await self.execute(
"""CREATE TABLE IF NOT EXISTS dev(
mode TEXT PRIMARY KEY
)"""
)
async def get_mode(self):
return await self.one("SELECT mode FROM dev") or ""
db1 = modeDB()```
hab mir jetzt nur das erste angeschaut aber der command heißt /info user, das heißt der subcommand heißt nur user und in der language datei steht userinfo
jo das sieht gut aus
ah ich hab gedacht ich muss imemr das nehmen was bei aync def steht
aber es klappt nicht
ne immer den command namen
error?
keinen
und was genau klappt nicht
okay und wie ist das wenn ich den namen für den command auch ändern will kann ich da einfach name: test schreiben?
ja
perfekt danke
er soll die db abfragen ob der mode oder off ist da er grade on ist sollte er den command "sperren" aber es geht normal wie immer
hm ich denke dass hat nichts damit zu tun dass du 2 DBs hast, da ist wahrscheinlich einfach deine anfrage falsch
bei den anderen klappt es auch hab das so ```py
class modeDB(ezcord.DBHandler):
def init(self):
super().init("haupt.db")
async def setup(self):
await self.execute(
"""CREATE TABLE IF NOT EXISTS dev(
mode TEXT PRIMARY KEY
)"""
)
async def get_mode(self):
return await self.one("SELECT mode FROM dev") or ""
db1 = modeDB()
class afk(commands.Cog):
def init(self, bot):
self.bot = bot
self.default_afk_statuses = ["Mein Leben macht ein Update", "Ich muss einkaufen gehen", "Ich bin AFK",
"Meine Mutter ruft mich", "zzzZZZ", "Gehe Kaffee holen", "Ich bin AFK",
"Ich Lebe noch", "Ich sterbe vor langeweile"]
@slash_command(description="Setze deinen AFK Status")
@discord.ext.commands.guild_only()
async def afk(self, ctx, afk_status: Option(str, "Dein AFK Status", required=False)):
mode = await db1.get_mode()
if mode == "on":
embed = discord.Embed(
title="Fehler",
description="Der AFK Befehl ist deaktiviert.\n"
"Der Entwicklermodus ist aktiviert.",
color=discord.Color.red()
)
await ctx.respond(embed=embed)
return```
und wenn ich die Texte definieren will da dann auch einfach immer den Command namen?
ne nur bei den commands
kann ich irgendwie machen, dass der bot die nachricht 5 sekunden nach senden wieder löscht?
Klar
:O wie
await asyncio.sleep(5)
await ctx.delete()``` zb so @cloud cedar
ui, probier ich mal danke
also meinst du, die welche der bot sendet oder der beutzer
er hat doch gesagt dem bot
hab schon
es geht
ah ja anscheinend bin ich blind xD
haha
Wie kann ich nach einem Bot neustart, dass select menu immer noch nutze ohne es zu senden ?
was meinst du? dass die alten immernoch funktionieren?
Das wenn ich das select menu sende, es nach einem bot neustart immer noch geht ohne es neu senden zu müssen
dazu musst du es persistent machen
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...
müsste er da erklären
zb so ```py
CreateTicketSelect(discord.ui.View):
def init(self):
super().init(timeout=None)
@discord.ui.select(
custom_id="bro ich weiss nicht",
min_values=1,
max_values=2,
placeholder="Make a selection of your ticket",
options=options,
)```
Danke dir
Wie kann ich den Benutzer + die Rolle über dem embed anpingen lassen?
ju
wenn du die rolle pingen möchtest, dann kannst du das so machen
if role_supporter:
await channel.send(content=role_supporter.mention, embeds=[em0, em], file=file0, view=TicketOptionMenu(self.bot))
msg = await ticket_channel.send(f"{teamroletag}{interaction.user.mention}")```
halt so @stoic stratus
kann man es auch für db machen ?
bin i lost? ```py
@slash_command()
async def lfg(self, ctx):
select = TutorialSelect()
view = discord.ui.View(timeout=None)
await view.add_item(select)
await ctx.respond(view=view)
def setup(bot):
bot.add_cog(Dropdown(bot))
class TutorialSelect(discord.ui.Select):
def init(self):
super().init(
min_values=1,
max_values=1,
placeholder="Welches Game?",
options=options
)
Error: raise errors.ExtensionFailed(key, e) from e
discord.errors.ExtensionFailed: Extension 'cogs.lookingforgroup' raised an error: TypeError: Listener function must be a coroutine function.
<@&{teamroletag}}>```
class TutorialSelect(discord.ui.Select):
def __init__(self):
super().__init__(
min_values=1,
max_values=1,
placeholder="Welches Game?",
options=options
)
async def callback(self, interaction):
await interaction.response.send_message(f"Selected option: {self.values[0]}")
``` so muss es sein
teamroletag = f"<@&{teamroleID9}>"```
immernoch :(
teamroleID9 = ...
class TutorialSelect(discord.ui.Select):
def __init__(self):
super().__init__(
min_values=1,
max_values=1,
placeholder="Welches Game?",
options=options
)
teamroletag = f"<@&{teamroleID9}>"
async def callback(self, interaction: discord.Interaction):
await interaction.response.send_message(f"Selected option: {teamroletag}{interaction.user.mention} {self.values[0]}")
@cloud cedar send mal uns dem ganze code
jo, sekund
import discord
from discord.ext import commands
from discord.commands import slash_command
options = [
discord.SelectOption(label="1", description="6", emoji="👑"),
discord.SelectOption(label="2", description="9", emoji="🔫"),
discord.SelectOption(label="3", description="4", emoji="💎"),
discord.SelectOption(label="4", description="20", emoji="🚕")
]
class Dropdown(commands.Cog):
def __init__(self, bot):
self.bot = bot
@commands.Cog.listener()
@slash_command()
async def lfg(self, ctx):
select = TutorialSelect()
view = discord.ui.View(timeout=None)
await view.add_item(select)
await ctx.respond(view=view)
def setup(bot):
bot.add_cog(Dropdown(bot))
class TutorialSelect(discord.ui.Select):
def __init__(self):
super().__init__(
min_values=1,
max_values=1,
placeholder="Welches Game?",
options=options
)
async def callback(self, interaction: discord.Interaction):
await interaction.response.send_message(f"{interaction.user.mention} spielt {self.values[0]}")
ich wurde es mit buttons machen
import discord
from discord.ext import commands
from discord.commands import slash_command
options = [
discord.SelectOption(label="1", description="6", emoji="👑"),
discord.SelectOption(label="2", description="9", emoji="🔫"),
discord.SelectOption(label="3", description="4", emoji="💎"),
discord.SelectOption(label="4", description="20", emoji="🚕")
]
class Dropdown(commands.Cog):
def __init__(self, bot):
self.bot = bot
@commands.Cog.listener()
async def on_select(self, interaction):
await interaction.response.send_message(f"{interaction.user.mention} spielt {interaction.values[0]}")
@slash_command()
async def lfg(self, ctx):
select = TutorialSelect()
view = discord.ui.View(timeout=None)
await view.add_item(select)
await ctx.respond(view=view)
def setup(bot):
bot.add_cog(Dropdown(bot))
class TutorialSelect(discord.ui.Select):
def __init__(self):
super().__init__(
min_values=1,
max_values=1,
placeholder="Welches Game?",
options=options
)
reagiert nich
stimmt, probier ich mal
schick uns mal den error
@solid ingot Kann ich in der yaml wenn ich das so habe dort irgendwie leicht fields hinzufügen
ja klar, wenn du wissen willst wie die struktur dafür ist, mahc mal bei irgendeinem embed embed.to_dict()
und das muss ich dann einfach in der .yaml nachbauen?
wie krieg ich alle user auf den servern auf denen mein botti ist
bot.members müsste es sein
name=f"mit {bot.members}ys",
AttributeError: 'Bot' object has no attribute 'members'
:(
Hallo ich habe probleme Py-cord zu instalieren und bekomme folgende fehlrer:
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
code?
Glaube bot.users
nein Terminal ausgabe
on_ready:
@bot.event
async def on_ready():
activity = discord.Activity(
type=discord.ActivityType.playing,
name=f"mit {bot.members}ys",
)
await bot.change_presence(activity=activity)
Versuch mal bot.users
Und dann noch len drum
Kein Ding
Hallo ich habe probleme Py-cord zu instalieren und bekomme folgende fehlrer:
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
Welche python version hast du?
wo sehe ich das?
Das sollte man eigentlich wissen wenn man mit python programmiert
ach doch stimmt stand gerade auf dem schlauch habe version 3.12.1
Du kannst py-cord nur mit Version 3.8-3.11 nutzen
ach ok wie update ich?
Findest du im Internet
ok danke
,
Ignoring exception in view <Ticket timeout=None children=3> for item <Select type=<ComponentType.string_select: 3> placeholder='Triff eine Auswahl' min_values=1 max_values=2 options=[<SelectOption label='Add User ' value='Add User ' description=' Add User to ticket' emoji=<PartialEmoji animated=False name='👥' id=None> default=False>, <SelectOption label='remove User' value='remove User' description='remove a from ticket' emoji=<PartialEmoji animated=False name='🌀' id=None> default=False>, <SelectOption label='hast du noch fragen ?' value='hast du noch fragen ?' description=' er user hat noch Fragen?' emoji=<PartialEmoji animated=False name='📌' id=None> default=False>] channel_types=[] disabled=False>:
Traceback (most recent call last):
File "C:\Users\Sonne\AppData\Local\Programs\Python\Python311\Lib\site-packages\discord\ui\view.py", line 426, in _scheduled_task
await item.callback(interaction)``` ```py
options = [
discord.SelectOption(label="Add User ", description=" Add User to ticket", emoji="👥"),
discord.SelectOption(label="remove User", description="remove a from ticket", emoji="🌀"),
discord.SelectOption(label="hast du noch fragen ?", description=" er user hat noch Fragen?", emoji="📌"),
]
class Ticket(discord.ui.View):
def __init__(self):
super().__init__(timeout=None)
self.button_pressed = False
@discord.ui.button(label="Ticket accepted", style=discord.ButtonStyle.green, emoji="🗂️", row=1, custom_id="accepted_button")
async def assume_ticket(self, button, interaction):
if self.button_pressed:
await interaction.response.send_message("You have already accepted the ticket.", ephemeral=True)
return
await interaction.response.defer()
member = interaction.user
embed = discord.Embed(
title="Ticket accepted",
description=f"{member.mention} will now take care of your request!",
color=discord.Color.blue()
)
await interaction.followup.send(embed=embed)
self.button_pressed = True
@discord.ui.button(label="Close", style=discord.ButtonStyle.blurple, emoji="🔐", row=1, custom_id="close_ticket")
async def close_ticket(self, button, interaction):
topic = interaction.channel.topic
if interaction.user.name == topic or interaction.user == interaction.guild.owner:
embed = discord.Embed(
title="Close Ticket",
description="Deleting Ticket in less than `5 Seconds`... ⏳\n\n"
"_If not, you can do it manually!_",
color=discord.Color.dark_red()
)
await interaction.response.send_message(embed=embed, ephemeral=True)
await asyncio.sleep(5)
await interaction.channel.delete()
else:
embed = discord.Embed(
title="No Permission ❌",
description="You are not the server owner or the ticket user.",
color=discord.Color.red()
)
await interaction.response.send_message(embed=embed, ephemeral=True)
@discord.ui.select(
custom_id="digga frage mich doch nicht",
min_values=1,
max_values=2,
placeholder="Triff eine Auswahl",
options=options,
)
async def callback(self, interaction):
await interaction.response.send_modal(UserModal())
async def callback(self, interaction):
await interaction.response.send_modal(removeuser())```
Sicher das dies der ganze Error ist?
Und du hast da zwei mal callback
ja
Hmmmm eigentlich sollte der Error weiter gehen
bei mir aber nicht
guck
Also geht der Error doch weiter?????
Warum sagst du dann nein
Du hast nur den Anfang des Errors geschickt
Du hast zwei Callbacks
wie soll ich denn machen ?
ein callback haben
hab 2 mal Modal wenn du mein code gelesen hast :D
Kann es sein das du die Codes nicht so richtig verstehst?
Das eine ist grad dein Callback für den Select und das andere ist grad einfach nur eine Funktion die Callback heißt aber grad keinen nutzen hat
😄
aso jerzt ich weiss du wie du meiste ok ..
komm immer doch
Müsste in das Callback nicht noch als Parameter select rein?
class TutorialView(discord.ui.View):
def __init__(self):
super().__init__(timeout=None)
@discord.ui.select(
min_values=1,
max_values=2,
placeholder="Triff eine Auswahl",
options=options,
custom_id="keks"
)
async def select_callback(self, select, interaction):
if "Python" in select.values:
labels = [option.label for option in select.options]
if "Keks" not in labels:
select.append_option(keks)
else:
select.disabled = True
await interaction.response.edit_message(view=self)
else:
s = ""
for auswahl in select.values:
s += f"- {auswahl}\n"
await interaction.response.send_message(f"Du hast folgendes ausgewählt:\n{s}")```
Also wie hier
hab eine farge warum sag er die ganze zeit bin nicht er ticket owner aber ich bin er ticket owner py if interaction.user.name == interaction.channel.topic: await asyncio.sleep(1) await interaction.channel.delete() else: error_embed = discord.Embed( title="Access Denied", description="You are not the owner of this ticket.", color=discord.Color.red() ) await interaction.response.send_message(embed=error_embed, ephemeral=True)
@stoic stratus weiss du villt ?
ich würde es mit display_name probieren
versuch das ganze mal so z.b. zu printen und schick dann mal was rauskommt:
print(f"{interaction.user.name} = {intteraction.channel.topic}")
if interaction.user.name == interaction.channel.topic:
await asyncio.sleep(1)
await interaction.channel.delete()
else:
error_embed = discord.Embed(
title="Access Denied",
description="You are not the owner of this ticket.",
color=discord.Color.red()
)
await interaction.response.send_message(embed=error_embed, ephemeral=True)```
littxle_ = Ticket for littxle_. Contact <@&1209968021070815262> for assistance.
merkst du etwas?🤣
np
ist das erste gleich wie das zweite
kann man auch mehrere server id's einfügen
ja, serverid1, serverid2 usw
also zb
[123, 456, 678]
@discord.ui.button(label="Create Ticket", style=discord.ButtonStyle.primary, emoji="📨", custom_id="create_ticket")
async def button_callback1(self, button, interaction):
embed = discord.Embed(
title="Create Ticket",
description="Choose your ticket",
color=discord.Color.blurple()
)
await interaction.response.send_message(embed=embed, view=CreateTicketSelect(), ephemeral=True)``` warum zeig das embed nicht an
Versuch erstmal selber zu lösen
Psst verrate es nicht
@discord.ui.button(label="Create Ticket", style=discord.ButtonStyle.primary, emoji="📨", custom_id="create_ticket")
async def button_callback1(self, button, interaction):
embed = discord.Embed(
title="Create Ticket",
description="Choose your ticket",
color=discord.Color.blurple()
)
await interaction.respond(embed=embed, view=CreateTicketSelect(), ephemeral=True)```
Hmm
hab eine frage wie kann ich machen kann man nur als ticket owner auf buttons Drücken ```py
@discord.ui.button(label="Yes, I still have questions", style=discord.ButtonStyle.primary, row=1, emoji="🎟️", custom_id="frage_ticket")
async def ask_back(self, button, interaction):
ticket_opener = interaction.channel.topic
embed = discord.Embed(
title="Ask questions",
description=f"All clear {ticket_opener}, you can now ask your questions.",
color=discord.Color.green()
)
await interaction.response.send_message(embed=embed)
@discord.ui.button(label="No, all done", style=discord.ButtonStyle.green, row=1, emoji="✅", custom_id="no_ticket")
async def no_back(self, button, interaction):
await asyncio.sleep(1)
await interaction.channel.delete()```
moin, ich habe bei meinem voice bot einmal radio und einmal tts, wie kann ich machen, dass das radio wieder anfängt, nachdem tts fertig ist?
ich glaube es können immer alle draufdrücken, du musst nur in deinem callback checken ob der interaction user {ticket_opener} ist (glaube ich)
hatte schon das aber geht nicht er sagt die ganze zeit das nicht er owner bin
printe mal interaction user
ok
was meiste du
Mein Bot soll für TTs kurz das radio pausieren und wenn er fertig gesprochen hat weiter radio abspielen
voice_channel = ctx.author.voice.channel
voice_client = get(bot.voice_clients, guild=ctx.guild)
if voice_client and voice_client.is_playing():
voice_client.pause()
await ctx.respond(message, tts=True)
while discord.utils.get(bot.guilds, id=ctx.guild.id).voice_client.is_playing():
await asyncio.sleep(1)
if voice_client and voice_channel:
await voice_client.move_to(voice_channel)
voice_client.resume()``` hier ist ein zb
@cloud cedar
danke, probiere ich 
der bot soll selber in dem Sprachkanal sprechen, ich probiere den code umzuschreiben
ja du kannst ja machen es ja auch ein zb
danke
jungs eine frage wieso kann ich nichts mehr in die Datenbank eintragen lassen?
UPDATE users SET xp = xp + 1 WHERE user_id = ? (interaction.user.id,)
und es macht einfach nichts wieso?
voller code:
async with aiosqlite.connect(config.database) as db:
await db.execute("UPDATE users SET xp = xp + 1 WHERE user_id = ?", (interaction.author.id,))
await db.commit()
await interaction.respond("XP hinzugefügt")
@empty plaza https://youtu.be/x8Z1D-0mFzU
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 schauen wir uns an, wie der ...
discord.Member.timeout
discord.Member.timeout_for
discord.ui.View.timeout
discord.Guild.afk_timeout
discord.ui.View.on_timeout
discord.ui.Modal.on_timeout
discord.Member.remove_timeout
discord.AuditLogDiff.afk_timeout
discord.AutoModActionType.timeout
discord.ui.View.disable_on_timeout
discord.AutoModActionMetadata.timeout_duration
discord.ext.pages.Paginator.on_timeout
wieso ergibt ctx.author.bot false
naja weil du kein Bot bist
vielleicht schon haha nein spass
stimmt auch wieder, hab heraus gefunden wollte gucken ob der angegebener user ein bot ist aber naja
eine frage
frag nach
wisst ihr wie man in einem bot status die server auf dem er ist.
die anzahl?
jap
müsste len(self.bot.guilds) sein (also die länge der liste von servern)
hier ??
in die hier ""
jungs ist aber falsch
printe mal len(bot.guilds)
es wird 0 Geprintet
ja
dann einfach user.bot
welche Intents hast du aktiviert
hab schon
also geht?
[ERROR] Error while sending error report to webhook. Please check if the URL is correct.
[ERROR] Error while executing /ticket setup
Traceback (most recent call last):
File "C:\Users\Sonne\AppData\Local\Programs\Python\Python311\Lib\site-packages\discord\commands\core.py", line 131, in wrapped
ret = await coro(arg)
^^^^^^^^^^^^^^^
File "C:\Users\Sonne\AppData\Local\Programs\Python\Python311\Lib\site-packages\discord\commands\core.py", line 1009, in _invoke
await self.callback(self.cog, ctx, **kwargs)
File "c:\Users\Sonne\Documents\Flexii\cogs\admin\ticketv2.py", line 83, in setup
await db.set_category(server_id, category_id)
File "c:\Users\Sonne\Documents\Flexii\cogs\admin\ticketv2.py", line 23, in set_category
await self.execute(
File "C:\Users\Sonne\AppData\Local\Programs\Python\Python311\Lib\site-packages\ezcord\sql.py", line 330, in execute
return await self.exec(sql, *args, end=end, **kwargs)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\Users\Sonne\AppData\Local\Programs\Python\Python311\Lib\site-packages\ezcord\sql.py", line 324, in exec
raise e
File "C:\Users\Sonne\AppData\Local\Programs\Python\Python311\Lib\site-packages\ezcord\sql.py", line 321, in exec
cursor = await db.execute(sql, args)
^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\Users\Sonne\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\Sonne\AppData\Local\Programs\Python\Python311\Lib\site-packages\aiosqlite\core.py", line 132, in _execute
return await future
^^^^^^^^^^^^
File "C:\Users\Sonne\AppData\Local\Programs\Python\Python311\Lib\site-packages\aiosqlite\core.py", line 115, in run
result = function()
^^^^^^^^^^
sqlite3.OperationalError: ON CONFLICT clause does not match any PRIMARY KEY or UNIQUE constraint``` ```py
@ticket.command(description="Setup a ticket")
@discord.guild_only()
@discord.default_permissions(administrator=True)
async def setup(self, ctx, category: discord.CategoryChannel, role: discord.Role):
server_id = ctx.guild.id
category_id = category.id
teamrole_id = role.id
await db.set_category(server_id, category_id)
await db.set_teamrole(server_id, teamrole_id)
embed = discord.Embed(
title="Create a ticket",
description="**If you need support, click `📨 Create ticket` button below and create a ticket!**",
color=discord.Color.dark_green()
)
embed.timestamp = datetime.utcnow()
await ctx.channel.send(embed=embed, view=CreateTicket())
await ctx.respond("Setup was successful", ephemeral=True)```
hier ist die db ```py
class TicketDB(ezcord.DBHandler):
def init(self):
super().init("db/ticket.db")
async def setup(self):
await self.execute(
"""CREATE TABLE IF NOT EXISTS ticket(
server_id INTEGER,
user_id INTEGER,
category_id INTEGER DEFAULT 0,
teamrole_id INTEGER DEFAULT 0,
PRIMARY KEY(server_id, user_id)
)"""
)
async def set_category(self, server_id, category_id):
await self.execute(
"INSERT INTO ticket (server_id, category_id) VALUES (?, ?) ON CONFLICT(server_id) DO UPDATE SET category_id = ?",
(server_id, category_id, category_id)
)
async def get_category(self, server_id):
return await self.one("SELECT category_id FROM ticket WHERE server_id = ?", (server_id,))
async def set_teamrole(self, server_id, teamrole_id):
await self.execute(
"INSERT INTO ticket (server_id, teamrole_id) VALUES (?, ?) ON CONFLICT(server_id) DO UPDATE SET teamrole_id = ?",
(server_id, teamrole_id, teamrole_id)
)
async def get_teamrole(self, server_id):
return await self.one("SELECT teamrole_id FROM ticket WHERE server_id = ?", (server_id,))
async def add_ticket(self, server_id, user_id):
await self.execute(
"INSERT OR IGNORE INTO ticket (server_id, user_id) VALUES (?, ?)", (server_id, user_id)
)
await self.execute(
"UPDATE ticket SET user_id = ? WHERE server_id = ?", (user_id, server_id)
)
async def get_userid(self, server_id):
return await self.one("SELECT user_id FROM ticket WHERE server_id = ?", (server_id,))
async def delete_user(self, server_id):
await self.execute("UPDATE ticket SET user_id = 0 WHERE server_id = ?", (server_id,))
async def get_ticket_users(self):
return await self.all("SELECT server_id, user_id FROM ticket WHERE user_id != 0")
db = TicketDB()```
Führe den folgenden Befehl aus, um den Ezcord Master-Branch zu installieren.
pip install git+https://github.com/tibue99/ezcord```
**Hinweis:** [Git](https://git-scm.com/downloads) muss bei dir installiert sein.
Füge die folgende Zeile zu deiner requirements.txt-Datei hinzu, um den Ezcord Master-Branch zu installieren.
ezcord @ https://github.com/tibue99/ezcord```
weiß wer wie der import name heißt wo man dann so customize title bei python programmer machen kann?

wie meinst?
sowas zb
weil es gibt eigene imports dafür soweit ich weiß
sicher bin ich mir auch nicht nie wirklich gebraucht
from colorama import Fore```
dankeschön
hab doch 🤔
mit ein /-
😮
da findet der das nd
schade
was soll ich machen in der requirements steht es drinne
hast do py-cord geschrieben?
zeig mal die requirements.txt
aiosignal==1.3.1
async-timeout==4.0.2
asyncio==3.4.3
attrs==22.2.0
certifi==2022.12.7
charset-normalizer==2.1.1
colorama==0.4.6
DateTime==4.9
frozenlist==1.3.3
idna==3.4
multidict==6.0.4
py-cord==2.3.2
python-dotenv==0.21.0
pytz==2022.7
requests==2.28.1
scrapetube==2.3.1
typing_extensions==4.4.0
urllib3==1.26.13
yarl==1.8.2
youtube-dl==2021.12.17
zope.interface==5.5.2
aiosqlite
discord.py==1.7.3
aiohttp
requests
colorama
Flask
pystyle
bs4
pyfiglet==0.8.post1
openai==0.28.0
googletrans==4.0.0-rc1```
@rose epoch
⚠️ Entferne alle Module aus der Python Standardbibliothek
asyncio==3.4.3
DateTime==4.9```
⚠️ Es sollte nur eine Discord Library installiert sein
```yml
py-cord==2.3.2
discord.py==1.7.3```
*Ich habe [diese Nachricht](#1019974414487535736 message) geprüft.*
na hör mal
hast du discord.py und asyncio, datetime gelöscht aus der requirements.txt
ja
😮
discord.Client 😄
das heißt?
dein code sieht aus nach discord.py
ja das stimmt
mit bäumen 💀
lösch mal py-cord aus der requirements.txt und mach da discord.py rein
🌲
seit wann geht discord.Client xD
und wieso genau definierst du bot zwei mal?
Mein Discord Server
► https://discord.gg/zfvbjTEzv6
Discord Developer Portal
► https://discord.com/developers/applications
Downloads
Python ► https://www.python.org/downloads/
PyCharm ► https://www.jetbrains.com/de-de/pycharm/
Pycord
Docs ► https://docs.pycord.dev/
Guide ► https://guide.pycord.dev/introduction/
Discord Server ► https://discor...
discord.py eben
habe den gekauft
wtf dpy macht ja gar kein sinn
fiverr o wie?
doch aber der code eher weniger xD
na ja, kann auch sein
aber er geht
aber halt nur nicht bei mir
wegen deinen requirements
hast du discord lib installiert ?
er hat doch seine requirements geschickt 👀
same error
hm kann nicht sein
aiohttp==3.8.3
aiosignal==1.3.1
attrs==22.2.0
certifi==2022.12.7
charset-normalizer==2.1.1
colorama==0.4.6
frozenlist==1.3.3
idna==3.4
multidict==6.0.4
python-dotenv==0.21.0
pytz==2022.7
requests==2.28.1
scrapetube==2.3.1
typing_extensions==4.4.0
urllib3==1.26.13
yarl==1.8.2
youtube-dl==2021.12.17
zope.interface==5.5.2
aiosqlite
discord.py
aiohttp
requests
colorama
Flask
pystyle
bs4
pyfiglet==0.8.post1
openai==0.28.0
googletrans==4.0.0-rc1
discord
alles löschen 🙂
und dann
sollte das nicht dann klappen kannst du evtl zur Probe
import discord, *
``` Testen
Wieso wird es hier nicht geupdatet und in der datenbank hinzugefügt ?
await check_teamler_code(ctx)
role_id = 1163282025483087884
role_supporter = ctx.guild.get_role(role_id)
if not role_supporter in ctx.user.roles:
return await ctx.response.send_message("Du bist kein Supporter", ephemeral=True)
async with aiosqlite.connect("data/tickets.db") as db:
async with db.execute("SELECT * FROM codes WHERE user_id = ?", (ctx.user.id,)) as cursor:
row = await cursor.fetchone()
code = row[1]
async with aiosqlite.connect("data/tickets.db") as db:
async with db.execute("UPDATE OR ABORT tickets SET claimed = ?, teamler_id = ? WHERE user_id = ?", (1, code , ctx.user.id)):
await db.commit()
mach mal OR ABORT weg
Hab
versuch nochmal
Geht immer noch nicht
print mal code
Code wird geprintet
hmm naja ich kenne mich nicht so gut mit dbs aus
Wäre dies aber so richtig ?
async with aiosqlite.connect("data/tickets.db") as db:
await db.execute("CREATE TABLE IF NOT EXISTS tickets (user_id INTEGER, claimed BOOLEAN DEFAULT 0, teamler_id TEXT DEFAULT 'NONE')")
await db.execute("CREATE TABLE IF NOT EXISTS users (user_id INTEGER, tickets INTEGER DEFAULT 0)")
await db.commit()
``` claimed soll nen boolean sein der entweder false oder true ist und beim claimen wird dieser true (standertmäßig ist dieser false)
also hast du await db.execute("UPDATE tickets SET claimed = ?, teamler_id = ? WHERE user_id = ?", (1, code, ctx.author.id))
ja
jo
Kann ich ein Slashcommand nur für bestimmte Server einblenden lassen?
Ja! Zum Beispiel:
@discord.slash_command(guild_ids=[1234567890])
Da kann eine Liste von Guild ids hin
Vielen dank
kann wer helfen mit db ?
Kommt drauf an was nh
Ich verstehe nicht, warum immer nur eine Benutzer-ID in der Datenbank gespeichert wird
Wie lautet denn deine query zum hinzufügen einer Benutzer Id?
async def add_user(self, user_id, server_id):
async with self.start() as cursor:
await cursor.exec(
"INSERT INTO ticket (user_id, server_id) VALUES (?, ?) ON CONFLICT(server_id) DO UPDATE SET user_id = ?",
(user_id, server_id, user_id)
)```
@urban glen
@discord.ui.button(label="Create Ticket", style=discord.ButtonStyle.primary, emoji="📨", custom_id="create_ticket")
async def button_callback1(self, button, interaction):
user_id = interaction.user.id
server_id = interaction.guild.id
await db.add_user(user_id, server_id)
embed = discord.Embed(
title="Create Ticket",
description="Choose your ticket",
color=discord.Color.blurple()
)
await interaction.respond(embed=embed, view=CreateTicketSelect(), ephemeral=True)```
weil jedes mal es zu einen conflict kommt und er die user id updated
lass des hintere weg dann siehst du welcher conflict kommt
was soll weg lassen ..
async def add_user(self, user_id, server_id):
async with self.start() as cursor:
await cursor.exec(
"INSERT INTO ticket (user_id, server_id) VALUES (?, ?)",
(user_id, server_id, user_id)
)```
so dann siehst du welchen error er hat
Ja wegen dem conflict sagst du ja wenn es die Server id schonmal gibt dann soll er die User Id updaten
Also geht quasi nur 1 User pro Server
async def add_user(self, user_id, server_id):
async with self.start() as cursor:
await cursor.exec(
"INSERT INTO ticket (user_id, server_id) VALUES (?, ?)",
(user_id, server_id)
)```
wie kann ich machen mit alle user id
kommt bei seinen code ein error
keine Ahnung bin ich der Code?
das war eine Aussage keine Frage xD
Ignoring exception in view <CreateTicket timeout=None children=1> for item <Button style=<ButtonStyle.primary: 1> url=None disabled=False label='Create Ticket' emoji=<PartialEmoji animated=False name='📨' id=None> row=None>:
Traceback (most recent call last):
File "C:\Users\Sonne\AppData\Local\Programs\Python\Python311\Lib\site-packages\discord\ui\view.py", line 426, in _scheduled_task
await item.callback(interaction)
File "c:\Users\Sonne\Documents\Flexii\cogs\admin\ticketv2.py", line 103, in button_callback1
await db.add_user(user_id, server_id)
File "c:\Users\Sonne\Documents\Flexii\cogs\admin\ticketv2.py", line 43, in add_user
await cursor.exec(
File "C:\Users\Sonne\AppData\Local\Programs\Python\Python311\Lib\site-packages\ezcord\sql.py", line 324, in exec
raise e
File "C:\Users\Sonne\AppData\Local\Programs\Python\Python311\Lib\site-packages\ezcord\sql.py", line 321, in exec
cursor = await db.execute(sql, args)
^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\Users\Sonne\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\Sonne\AppData\Local\Programs\Python\Python311\Lib\site-packages\aiosqlite\core.py", line 132, in _execute
return await future
^^^^^^^^^^^^
File "C:\Users\Sonne\AppData\Local\Programs\Python\Python311\Lib\site-packages\aiosqlite\core.py", line 115, in run
result = function()
^^^^^^^^^^
sqlite3.IntegrityError: UNIQUE constraint failed: ticket.server_id```
lucky guck mal dm
er hat server_id als primary key..
Das denke ich mal auch
Ist natürlich leicht unvorteilhaft bei Tickets
hat wer command ideen
womit konnte man nochmal commands nur für ein guild erlauben ?
@slash_command(description="Löse ein Gutschein Code ein")
@discord.guild_only(1202302610900783194)```
so ?
ja
@commands.guild_only()
aso du meinst nur für eine xD
Traceback (most recent call last):
File "C:\Users\toffe\Desktop\FixV-Service\venv\Lib\site-packages\discord\cog.py", line 778, in _load_from_module_spec
spec.loader.exec_module(lib) # type: ignore
^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "<frozen importlib._bootstrap_external>", line 995, in exec_module
File "<frozen importlib._bootstrap>", line 488, in _call_with_frames_removed
File "C:\Users\toffe\Desktop\FixV-Service\commands\FixV_Gutscheine.py", line 24, in <module>
class GutscheinCog(commands.Cog):
File "C:\Users\toffe\Desktop\FixV-Service\commands\FixV_Gutscheine.py", line 48, in GutscheinCog
@discord.guild_only(1202302610900783194)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
TypeError: guild_only() takes 0 positional arguments but 1 was given
The above exception was the direct cause of the following exception:
Traceback (most recent call last):
File "C:\Users\toffe\Desktop\FixV-Service\main.py", line 34, in <module>
bot.load_extension(f"commands.{filename[:-3]}")
File "C:\Users\toffe\Desktop\FixV-Service\venv\Lib\site-packages\discord\cog.py", line 912, in load_extension
self._load_from_module_spec(spec, name)
File "C:\Users\toffe\Desktop\FixV-Service\venv\Lib\site-packages\discord\cog.py", line 781, in _load_from_module_spec
raise errors.ExtensionFailed(key, e) from e
discord.errors.ExtensionFailed: Extension 'commands.FixV_Gutscheine' raised an error: TypeError: guild_only() takes 0 positional arguments but 1 was given```
mach die id weg
a ja
wenn du nur für eine guild haben willst musst du es so machen
@discord.slash_command(guild_ids=[1234567890])
bzw nur für die in der liste eben..
guild_only heißt nur das es nicht per dm geht
@urban glen mach mal pip list
geht einfacher
@slash_command(description="Löse ein Gutschein Code ein", guild_only=True)
Ja so habe ich es jetzt 😉
wasn das für ein kack
@viscid lake
Führe den folgenden Befehl aus, um den Ezcord Master-Branch zu installieren.
pip install git+https://github.com/tibue99/ezcord```
**Hinweis:** [Git](https://git-scm.com/downloads) muss bei dir installiert sein.
Für Hosting das hier
Füge die folgende Zeile zu deiner requirements.txt-Datei hinzu, um den Ezcord Master-Branch zu installieren.
ezcord @ https://github.com/tibue99/ezcord```
sieht aus als würde ein egg fehlen
aber welches
Kenne mich da nicht aus
komisches egg
Ah Nvm er findet den Pfad nicht 😂
das kommt immer wenn ich ein cmd amchen will obwohl ich überall mir perms gegeben habe
Ich kann es nicht Lösen
na ja, in python geht das so nicht
Wie denn?
Wie in die Liste
na ja channels_to_sync ist eine liste
hast du die rolle ?
ja, eigentlich schon
liegts daran, dass er ein embed mitsendet? kann doch eigentlich nicht sein, oder
ich schick mal ne normale nachricht
Nein am Embed liegt es nicht
habe es auch so
hat der bot perms zum Pingen der rollen ?
ist admin
doofer bot
Man kann in den Server Einstellungen bei den Rollen einstellen ob die gepinged werden dürfen oder nicht.
Vielleicht liegt es ja daran?
er hat gesagt, dass der bot die perms hat
ah das hab ich überlesen
Aber ist diese Einstellungen für die lfg Rolle nicht trotzdem nochmal separat
ich guck nochmal, danke
hab jedem erlauben diese rolle zu erwähnen angemacht, geht trotzdem nicht
hast du die nachricht nochmal schicken lassen?
Weil wenn du es jetzt aktiviert hast, wird die nachricht von davor nicht mehr gelb soweit ich weiß
ja
Wie kann man sowas fixen
Hast du Intents für die member?
intents.members = True
Schau ob es dann geht
ok mach gleich
welchen Zusammenhang 🤔
datetime in sql
wüsste nd das es daily gibt bei datetime
Warum kommt da None raus
Mein Discord Server
► https://discord.gg/zfvbjTEzv6
Links aus diesem Video
SQLite Datetime Docs ► https://www.sqlite.org/lang_datefunc.html
▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬
Mein Hosting* ► https://tidd.ly/3gJufg6
Code auf Github ► https://github.com/tibue99/tutorial-bot
Discord Developer Portal ► https://discord.com/developers/applications
▬▬▬▬▬▬▬▬▬▬▬...
Probier Mal timestamp < und hier der rest
Weil so überprüfst du ob der timestamp genau 32h her ist also auf die Sekunde genau
wieso speicherst du nicht einf die zeit die das dann ist 🤔
achso breh, Danke
ja hatte ich an
[ERROR] Error while sending error report to webhook. Please check if the URL is correct.
[ERROR] Error while executing /ticket setup
Traceback (most recent call last):
File "C:\Users\Sonne\AppData\Local\Programs\Python\Python311\Lib\site-packages\discord\commands\core.py", line 131, in wrapped
ret = await coro(arg)
^^^^^^^^^^^^^^^
File "C:\Users\Sonne\AppData\Local\Programs\Python\Python311\Lib\site-packages\discord\commands\core.py", line 1009, in _invoke
await self.callback(self.cog, ctx, **kwargs)
File "c:\Users\Sonne\Documents\Flexii\cogs\admin\test.py", line 79, in setup
await db.set_category(server_id, category_id)
File "c:\Users\Sonne\Documents\Flexii\cogs\admin\test.py", line 24, in set_category
await self.execute(
File "C:\Users\Sonne\AppData\Local\Programs\Python\Python311\Lib\site-packages\ezcord\sql.py", line 330, in execute
return await self.exec(sql, *args, end=end, **kwargs)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\Users\Sonne\AppData\Local\Programs\Python\Python311\Lib\site-packages\ezcord\sql.py", line 324, in exec
raise e
File "C:\Users\Sonne\AppData\Local\Programs\Python\Python311\Lib\site-packages\ezcord\sql.py", line 321, in exec
cursor = await db.execute(sql, args)
^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\Users\Sonne\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\Sonne\AppData\Local\Programs\Python\Python311\Lib\site-packages\aiosqlite\core.py", line 132, in _execute
return await future
^^^^^^^^^^^^
File "C:\Users\Sonne\AppData\Local\Programs\Python\Python311\Lib\site-packages\aiosqlite\core.py", line 115, in run
result = function()
^^^^^^^^^^
sqlite3.OperationalError: near "(": syntax error``` ```py
class ticketDB(ezcord.DBHandler):
def __init__(self):
super().__init__("db/ticket.db")
async def setup(self):
await self.execute(
"""CREATE TABLE IF NOT EXISTS ticket(
server_id INTEGER,
user_id INTEGER,
category_id INTEGER DEFAULT 0,
teamrole_id INTEGER DEFAULT 0,
FOREIGN KEY (user_id) REFERENCES user(id)
)"""
)
async def set_category(self, server_id, category_id):
await self.execute(
"INSERT INTO ticket (server_id, category_id) VALUES (?, ?) (server_id) DO UPDATE SET category_id = ?",
(server_id, category_id, category_id )
)
async def get_category(self, server_id):
return await self.one("SELECT category_id FROM ticket WHERE server_id = ?", (server_id,))
async def set_teamrole(self, server_id, teamrole_id):
await self.execute(
"INSERT INTO ticket (server_id, teamrole_id) VALUES (?, ?) (server_id) DO UPDATE SET teamrole_id = ?",
(server_id, teamrole_id, teamrole_id)
)
async def get_teamrole(self, server_id):
return await self.one("SELECT teamrole_id FROM ticket WHERE server_id = ?", (server_id,))
async def add_user(self, user_id, server_id):
await self.execute(
"INSERT OR IGNORE INTO ticket (user_id, server_id) VALUES(?, ?)", (user_id, server_id)
)
async def get_userid(self, server_id):
return await self.one("SELECT user_id FROM ticket WHERE server_id = ?", (server_id,))
async def delete_user(self, server_id):
await self.execute("UPDATE ticket SET user_id = 0 WHERE server_id = ?", (server_id,))
async def get_ticket_users(self):
return await self.all("SELECT server_id, user_id FROM ticket WHERE user_id != 0")
db = ticketDB()``` pls help me
kannst du Errors lesen ?
xD
du sagtest dein code geht xD
Ja geht auch aber ist ein neu error aber egal hab jetzt eh user raus gemacht
Gibt es eine Seite bzw eine Liste welche Library es gibt ? Für Python ?
wie meinst du
welche libraries es alle gibt oder welche du installiert hast?
.
na ja die webseite von pip halt
https://pypi.org/project/pip/ da kannst du nach projekten suchen
danke das hab ich gesucht 😉

Bekomme denn error, wenn ich denn Bot auf meinem Server starte. Muss ja an der Datenbank liegen
ist bzw nicht so, wenn ich ihn auf meinem Pc starte
In meinem folder wo die Datenbank drinnen sein sollten sind sie nicht
Und werden da auch nicht erstellt
code und file structure?
Aber auf meinem PC funktioniert es halt
Verstehe ned warum es auf meinem Server ned geht
async with aiosqlite.connect("data/tickets.db") as db:
await db.execute("CREATE TABLE IF NOT EXISTS tickets (user_id INTEGER, teamler_id TEXT DEFAULT 'NONE', ticket_type TEXT)")
await db.execute("CREATE TABLE IF NOT EXISTS users (user_id INTEGER, tickets INTEGER DEFAULT 0)")
await db.commit()
ist dein server linux und dein pc windows?
Falls ja, der slash ist unter Linux in Dateinamen nicht zulässig. Er kann für Pfade verwendet werden, allerdings nicht für Namen. Das betrifft auch Datenbankdateien wie die von Sqlite zu. Versuch es Mal mit "data_tickets.db". Die Datei sollte natürlich vorher angelegt werden.
wie geht so was
muss es doch so sein oder @discord.default_permissions(administrator=True) oder @lucid furnace
sieht richtig aus
if interaction.user.name in interaction.channel.topic:
...
Würde es mit einer if bedingung im cmd machen sprich:
if interaction.user.guild_permissions.adminitrator:
...
else:
await interaction.response.send_message("Error: du hast keine Rechte für diesen command")
Geht auch bei buttons ect
Probier mal die Nachricht unter dem embed abzusenden
Also den Ping
wieso kann alle dem command machen
ist der command in einer slash group?
dann liegt das daran, ich weiß aber nicht wie man das lößt
Linux
Na dann versuchs mal mit einer Namensänderung. Beachte dazu auch groß und Kleinschreibung. Linux interessiert sowas in Dateinamen.
Hat auch so nicht geklappt
existiert die datei mit dem neuen namen denn? gibt es eine fehlermeldung?
hast du mal versucht dir 'n cursor zu machen und diesen dann die tables erstellen zu lassen?
müste bei dir sowas wie
cursor = await db.cursor()
sein.
Dieser führt dann CREATE TABLE usw. aus.
kann man natürlich genau so gut mit einem erneuten kontextmanager machen, so wie du die eigentliche verbindung herstellst. erspart einem das .close() später und ist etwas eleganter.
Um zu schauen ob es überhaupt funktioniert sollte das so allerdings reichen.
Dateien werden erstellt, aber nicht in dem ordner
machst dir n terminal auf, ssh'st rein, gibst mit nano oder cd oder.. [tool deiner wahl hier] den anfang des zielpfades an, drückst tab für auto-complete (geht auch wenn du über powershell rein gehst) und schaust Mal, wie genau der Dateipfad zum Ordner + der Datei im Terminal angezeigt wird.
Kannst natürlich auch hin navigieren und "pwd" eingeben.
Diesen Pfad verwendest du dann oben in deinem Code.
Wäre auf jeden fall gut zu wissen, ob oder wie weit das vom derzeitigen string abweicht
Auch wenn ich nur die Nachricht ohne embed sende werde ich nicht gepongot
Wieso wird hier Pycord Dev als Unknown gekennzeichent ?
weils den zweig so nicht mehr gibt
Wie installiere ich dann die Dev version von pycord ?
jaaaa gib mir ne sekunde das bild zu posten 😂
Danke
Und wie kriege ich das alte gelöscht ?
Müsste doch eigentlich im venv mit uninstall pycord gehen?
Würde direkte requirements, wie von GitHub, auch nicht in so einer Datei speichern und mit pip install git+https://github.com/123/123.git direkt installieren, aber das ist persönliche Präferenz
bzw wie bekomme ich jetzt nen custom status hin ? Ging ja nur mit der Dev version
Oder geht das dann jetzt garnicht mehr ?
Musst die Master Branch installieren
Mach mal den Command /master und dann pycord auswählen
Führe den folgenden Befehl aus, um den Pycord Master-Branch zu installieren.
pip install git+https://github.com/Pycord-Development/pycord```
**Hinweis:** [Git](https://git-scm.com/downloads) muss bei dir installiert sein.
Geht ja nicht, weil die Dev Version gelöscht worden ist
Die dev Version ja aber du kannst jetzt die dev version quasi mit der master branch oben installieren
ist quasi das gleiche
Ist halt die neueste Version von pycord
die noch nicht offiziell im normalen pip veröffentlicht ist
Das steht dann auf meinem Linux server
ja, weil du es mit git installiert hast und nicht wie sonst mit pip. funktioniert aber trotzdem
Geht ned
Hm das ist komisch, bei mir funktioniert alles
Hast du die alte Version erfolgreich gelöscht?
Jo
wenn ein bot eine CPU Auslastung von 100% liegt es dann am Server oder am Code?
Am Code
Ka
ja
Mit das kann man noch die commands usen aber ist kein admin und so
ja
es gibts noch @commands.has_permission()
Was hast du denn so für Module? Bei mir war es zum Beispiel ein Event, welches extrem viele Ressourcen verbraucht hat
hab eig fast nichts nur willkommen und afk
Magst du deinen Code mal irgendwie teilen? Könnte vielleicht an einem der Listener liegen oder falscher DB-Nutzung
ich kann dir das per dm schicken ist etwas mehr
Kannst du machen
hast du die bekommen?
Kannst du deinen Code vielleicht auf github stellen oder per pastebin teilen?
Warum das
weil er eine Auslastung von 100% hatte und du auf der Suche nach der Ursache warst?
Ich hab bereits eine Lösung
darf man fragen was das problem war?
der code
ja aber was im code meine ich
Auf den ersten Blick schon mal: Du hast relativ viele Datenbanken, das könnte einer der Gründe dafür sein. Schon mal darüber nachgedacht, nur eine Datenbank zu benutzen?
Gibt ja mittlerweile gute Programme wie DBeaver, um sich die Daten anzuschauen.
Auch dein Loop in premium.py könnte hohen Verkehr verursachen, vor allem weil du gleich mehrere solche Events hast.
Ich weiß nicht, wie ezcord.DBHandler funktioniert, aber ich nutze da mysql und habe viel mehr Freiheiten, zumindest auf den ersten Blick. Du erstellst ja fast in jeder Datei von "geld" so eine Class.
Wenn du kannst, und es das gibt, dann nimm immer eine aktive DB-Verbindung und erstell dir einen Pool aus Verbindungen, die gleichzeitig genutzt werden können. Hast du eine DB-Aktion fertig, dann kannst du diese Verbindung wieder in den Pool geben.
Deine async def on_message(self, message):-Event könnte ebenfalls hohe Auslastung verursachen, weil du die Ergebnisse aus der Datenbank nicht in einen von dir erstellten Cache packst. Das ist insofern sinnvoll, wenn der Bot auf mehreren Servern ist. So muss man nicht bei jeder Nachricht, was ja extrem viel sein kann, eine Verbindung zu einer Datenbank aufbauen und du nimmst die Daten dann zum Beispiel aus einem Dict
Nächstes mal bitte mehr Bilder zu viel Text 4-
xD
self.cursor.execute("SELECT guild_id, channel_id, channel_type, channel_name FROM voice_channels")
results = self.cursor.fetchall()
for guild_id, channel_id, channel_type, channel_name in results:
guild = discord.utils.get(self.bot.guilds, id=guild_id)
try:
guild_id = int(guild_id) # Konvertiere guild_id in eine Ganzzahl
except ValueError:
print(f"Guild ID '{guild_id}' is not a valid integer.")
continue
if guild is None:
print(f"Guild with ID {guild_id} not found.")
continue
Er spammt öfters einfach nur:
Guild with ID 2345678987654321232 not found.
Guild with ID 1234567890987654322 not found.
Guild with ID 3456543245654354456 not found.
# Einfach random IDS jetzt gemacht zum schutz vom Server
Er importet die Guild aber findet die angeblich nicht
Definitiv richtige id? Ist der bot auf diesen guilds?
Ich checke es nicht
Gib den ganzen Pfad an, da fehlt definitiv etwas
hast du in der requierments.txt file das module drinne?
Hallo ich habe mein pc zurückgesetzt und python (3.12.2) sowie pip neu installiert
jedoch wenn ich jetzt pip install py-cord oder pip install ezcord mache kommt der error
[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```
Ich habe vieles versucht aber nichts geht! Wäre toll wenn wer helfen könnte
Es gibt PyCord und EzCord nicht für Python 3.12
Du musst wenn den Master Branch von beidem installieren.
ezcord sollte mit 3.12 klappen, aber bei pycord brauchst du master
Führe den folgenden Befehl aus, um den Pycord Master-Branch zu installieren.
pip install git+https://github.com/Pycord-Development/pycord```
**Hinweis:** [Git](https://git-scm.com/downloads) muss bei dir installiert sein.
ansonsten installier doch mal die tolls aus dem error: https://visualstudio.microsoft.com/visual-cpp-build-tools/
hab ich aber mit master gehts
Hallo zusammen,
Ich brauche dringend Ihre Hilfe. Ich habe ein Problem mit einem Fehler im Discord-Bot. Ich habe einen Ticketkanal erstellt und bin definitiv der Eigentümer dieses Kanals. Wenn ich jedoch versuche, auf bestimmte buttons zuzugreifen, erhalte ich eine Fehlermeldung, die besagt, dass ich nicht der Inhaber des Tickets bin
Könnte jemand von euch bitte einen Blick darauf werfen und mir bei der Lösung dieses Problems helfen?
Vielen Dank im Voraus für Ihre Unterstützung! ``` ```py
class frageticket(discord.ui.View):
def __init__(self):
super().__init__(timeout=None)
async def check_user_permissions(self, interaction):
ticket_opener_id = None
channel = interaction.channel
if channel.topic and channel.topic.startswith("Ticket opened by"):
ticket_opener_id_str = channel.topic.split(":")[-1].strip()
if ticket_opener_id_str.isdigit():
ticket_opener_id = int(ticket_opener_id_str)
return interaction.user.id == ticket_opener_id
@discord.ui.button(label="Yes, I still have questions", style=discord.ButtonStyle.primary, row=1, emoji="🎟️", custom_id="frage_ticket")
async def ask_back(self, button, interaction):
has_permissions = await self.check_user_permissions(interaction)
if not has_permissions:
await interaction.response.send_message("Why do you want to accept the ticket if you are not a ticket holder?", ephemeral=True)
return
embed = discord.Embed(
title="Ask questions",
description=f"All clear {interaction.user.mention}, you can now ask your questions.",
color=discord.Color.green()
)
await interaction.response.send_message(embed=embed)
@discord.ui.button(label="No, all done", style=discord.ButtonStyle.green, row=1, emoji="✅", custom_id="no_ticket")
async def no_back(self, button, interaction):
has_permissions = await self.check_user_permissions(interaction)
if not has_permissions:
await interaction.response.send_message("You are not authorized to close this ticket.", ephemeral=True)
return
server_id = interaction.guild.id
await asyncio.sleep(1)
await interaction.channel.delete()```
Hast du mal überprüft, ob das Kanalthema auch stimmt/richtig gesetzt wird?
stimmt alles
@stoic stratus Monkey Markt schon geiel
Ja immer aber voll kacke das dann reset ist
Hallo,
bin dabei ein command zu machen .help es sollten dann alle commands kommen bin neu was coden angeht, dachte mir frage chatgpt habe es geamcht habe den code kopiert BOOM nichts geht. Würde mich um hilfe freunde. code -> ```import discord
from discord.ext import commands
intents = discord.Intents.default()
intents.messages = True # Erlaubt den Zugriff auf Nachrichten-Events
intents.guild_messages = True # Füge diese Zeile hinzu, um die Privileged message content-Berechtigung zu aktivieren
Erstelle eine Instanz des Bots mit den definierten Intents
bot = commands.Bot(command_prefix='.', intents=intents, help_command=None)
Event, das ausgelöst wird, wenn der Bot einsatzbereit ist
@bot.event
async def on_ready():
print(f'Bot ist bereit! Angemeldet als {bot.user}')
Befehl, der ein Embed mit Hilfeinformationen generiert
@bot.command()
async def help(ctx):
embed = discord.Embed(title="Hilfe", description="Hier sind die verfügbaren Befehle:")
embed.add_field(name=".hello", value="Begrüßt den Benutzer", inline=False)
embed.add_field(name=".info", value="Zeigt Informationen über den Bot", inline=False)
await ctx.send(embed=embed)```
Was bekommst du denn für einen Error?
garkeinen , aber wenn ich dann .help schreibe antwortet der bot mir nicht.
Du hast aber auch den Message Content Intent im Dev Portal aktiviert, oder?
upsi
Wenn's daran nicht liegt, weiß ich auch nicht weiter 
Ich hab eine frage wenn ich ein button so erstelle
class CreateTicket(discord.ui.View):
def __init__(self, bot: discord.Bot):
super().__init__(timeout=None)
self.bot = bot
kann ich da irgendwie davor eine Verbindung mit der Datenbank aufbauen?
Du kannst einfach dein Button mit die Datenbank verbinden
Ich hab noch eine frage
wenn ich eine id in der Datenbank finde wie kann ich dann auch genau die entfernen lassen?
if select.values[0].id in result:
select.values[0].id soll entfernt werden aus der Datenbank
DELETE FROM [deine tabelle] WHERE id = %s
damit löschst du halt einen datenbank eintrag
ja das mein ich nicht ganz ich möchte besser gesagt wo die select.values[0].id ist diesen Wert auf null setzen
und was genau ist %s
das ist ein platzhalter für parameter
das ist zumindest in MySQL so musst du mal gucken wie das bei sqlite ist
aber die query müsste trotzdem fast die gleiche sein
ja das Problem ist ich hab drei mal id und kann ich die id finden lass und dann in dieser Spalte diesen wert auf null setzen?
halt supportrole_1, 2, 3
wenn du eine funktion hast die das bei der datenbank macht kannst du ja auch 3 verschieden ids einsetzen
Ja 3 verschiede ids und wenn man die selbe id nochmal auswählt soll die dann auf null gesetzt werden
verstehe nicht
Ich habe drei Spalten mit den Namen supportrolle_1, supportrolle_2 und supportrolle_3, in denen jeweils eine ID gespeichert ist. Angenommen, ich habe bereits drei IDs eingetragen und möchte eine davon entfernen. Wenn ich dann im Dropdown-Menü die gleiche Rolle auswähle, soll die ID dieser Rolle in der Datenbank gefunden und auf NULL gesetzt werden.
Dann wäre die UPDATE-Methode vielleicht auch ganz hilfreich
Kleine Frage zum Thema Ressourcen für einen Bot, Reicht es für 1 Bot 1GB Ram und 1 CPU Core als Leistung?
Kommt auf die Funktionen an und ob es halt extrem rechenintensive Aufgaben ausführt.
Aber eigentlich sollte es ausreichen
Okay
Ich will nur mein bot starten aber es geht kann mir einer helfen
du hast from discord import slash_command geschrieben. Das heißt aber from discord.commands import slash_command
from discord import slash_command müsste auch gehen.
hab es auch so in meinem Code und das funktioniert
geht bei ihm aber anscheinend nicht
@novel ore beides geht nicht #1019974414487535736 message
@void creek Zeig mal deine requirements.txt
Um sicherzugehen das du die richtige Lib hast
Ich habe kein req
Wo hast du denn die Libs eingetragen?
Discord.py + py-cord???
Jap
Mach mal discord.py raus
discord.py und py-cord geht nicht zusammen.
Entweder eins von beidem.
Aber da du slash_command importieren willst, müsstest du discord.py raus nehmen
Und am besten die .cache und .local löschen
Also die Ordner
ja
Musst easy-pil logischerweise auch in deine requirements.txt eintragen
Kannst du errors lesen?
Ne
-_-
füge bei deinen requirements psutil hinzu
und generell einfach alle python packages die du genutzt hast
Danke
Und bitte schau dir erstmal Python an sich an. Denn solche errors sollte man selber lösen können
frage wenn ich ein code von einem anderen bot brauche kann ich das irgendwie importieren?
Copy & Paste?
wrm python3 auf windows
Hast du denn in C:\Users\andre eine Datei die main.py heißt?
Oder bist du im terminal im falschen ordner
fehler war das sie nicht drin war C:\Users\andre danke
oke nein geht trz noch immer nicht
findet sie trz nicht
Du schreibst den namen der Datei und fragst wie die Datei heißt????
Das macht keinen Sinn
es ergibt einf mies kein sinn datei namen übereinstimmt folder weg auch trz sagt er er findet es nicht
.
Das tut ja nix zur sache ?
python3 hat damit nix zu tun soweit ich weiß?
zeig mal die datein also ein screenshot von der main.py
falsch
@sullen dome Was ist der pfad zu deiner datei
C:\Users\andre\main.py
zeig das mal in deinem ordner
chill mal
hehe
habs halt in keinen extra ordner wie discord-bot oder so habs halt einf so drin
ganzen screen
aso
das man es so sieht
das hab ich doch auch gefragt??
alles gut haha
öffne mal deine cmd.exe
und mach da einfach mal python3 main.py
schau mal ob es an einem fehler der ide console liegt oder so
passt
geht?
hahah ja der war mir schon bewusst der fehler haha
aber ja
Dann 2 möglichkeiten:
1:
Du benutzt oben rechts immer das Play Symbol (falls du es nicht tust, siehe 2. Anhang)
2:
Du installierst dir die Code Runner Extension (schau 2. Anhang)
Wie kann ich überprüfen ob alle spalten eine ID haben?
deine aussage macht keinen sinn
Dann drück dich besser aus? Ist der Bot privat oder warum kannst du den Code nicht einfach kopieren?
Solange der Code nicht irgendwo öffentlich zu finden ist kann man nichts einfach so kopieren
code in andere ordner ich wollen das verbinden mit import
"frage wenn ich ein code von einem anderen bot brauche kann ich das irgendwie importieren?" zu dem sage ich ja IMPOTIEREN
Ich denke er hat das (so wie ich) verstanden dass du einen öffentlichen bot, oder zumindest einen nicht von dir meinst
Und ich denke das müsste über dieses sys oder os was in Timos import video benutzt wurde gemacht werden aber kenne mich damit nicht aus
Mein Discord Server
► https://discord.gg/zfvbjTEzv6
Inhalt 📚
Heute schauen wir uns alle Infos über Imports an, die ihr in eurem Python-Alltag braucht. Neben der init.py-Datei schauen wir uns verschiedene Import-Arten an, zB relative Imports. Viel Spaß :D
Timestamps 🕑
0:00 | Normale Imports (import, from, as)
1:44 | Packages & Module
3:47 ...
Dss hier
nein ich habe 2 bots auf meinem pc ich brauche imports aus einem anderen ordner sagen wir ich brauche in x bot die funktion a wie imptotiere ich es das ich ins bot x die funktion a habe
Das weiß ich leider nicht aber das müsste in diesem video erklärt werden
ich glaube nicht
Ja dann keine ahnung tut mir leid
Ist es keine option die funktion einfach in deinem neuen bot rein zu pasten?
nein
und doch ist im video
Wie importiert man py-cord in VS Code?
Im terminal pip install py-cord und in den files import discord
okay also genau so wie in PyCharm?
Ja
da kommt ein error
PS C:\Users\julia\Desktop\Julianwe17Bot> pip install py-cord
pip :
Die Benennung "pip" wurde nicht als Name eines Cmdlet, einer Funktion, einer Skriptdatei oder eines ausführbaren Programms erkannt. Überprüfen Sie die
Schreibweise des Namens, oder ob der Pfad korrekt ist (sofern enthalten), und wiederholen Sie den Vorgang.
In Zeile:1 Zeichen:1
+ pip install py-cord
+ ~~~
+ CategoryInfo : ObjectNotFound: (pip:String) [], CommandNotFoundException
+ FullyQualifiedErrorId : CommandNotFoundException
Keine ahnung wie man pip bei vscode macht
okay
lade pip herunter
Sofern beide Bots auf dem gleichen System/Server laufen, kannst du es halt über die Pfade probieren. Ich bezweifele allerdings, dass das so einfach klappt und mit einem einfachen Copy & Paste bist du da wesentlich schneller und es bereitet dir nicht so viele Umstände. Ist später auch für Fehlerbehebungen mehr als sinnvoll die Sachen nicht irgendwo in 3 Bots zwischenzulagern
warum zeig die commads nicht an
Wie mach ich diese Typing-Animation (wie beim keksbot.xyz)? mich interessiert vorallem auch der cursor
muss ich für den animierten avatar self.bot.user schreiben?
was meiste du
In dem Short hat er bot.user geschrieben, muss ich da self.bot.user schreiben?
ja bei cogs bracht man immer ein self
hast du geschaut ob andere die commands benutzen können
ja mit mein 2 acc auch aber geht nicht
na ja eig stimmt alles so wie es aussieht
ja es wegen
Hallo ich habe das Problem das ich viele embeds habe die den gleichen Text haben aber in unterschiedlichen commands genutzt werden meine frage ist wo es am sinnvollsten ist diese zu spreichen da ich nicht jedesmal den text neu kopieren will
In eine adere py datei oder doch in eine yaml oder so
Kannst einfach eine datei erstellen, wo du das Embed immer rausliest, aber kannst du auch mit einer yaml oder json datei machen
Was würdest du besser finden? also deine persönliche meinung
Ich würde erstmal gucken, was für mich angenehmer ist, ob extra datei, yaml oder json. Wenn ich eine Option gefunden habe die mir gefällt würde ich dies machen. Vorteil bei einer JSON oder YAML datei ist, dass du die texte jederzeit ändern kannst ohne deine IDE zu öffnen, aber musst du selber wissen und herausfinden was dir am besten gefällt
ah ok danke
Finde eine methode mit der du dich am wohlsten fühlst
ich würd sagern du hast utils.py wenn du das nicht eh schon hast
und da gibts dann die funktion create_my_embed() oder so und returned das embed halt
das kannste dann von überall importieren
hab ich tazächlich nicht
für was wird die sonst immer genutzt seh die immer mal wieder bei welchen?
ich hab da zum beispiel eine methode die ienen random string erstellt
oder guckt ob der user bestimmt rollen hat
sowas halt
also einfach nur kleine random funktionen die man über das programm verteilt mal braucht?
ja genau
wenn das einzeln ist kannsst du das dann halt easy überall benutzen
ah ok danke
und das passt auch sonst nicht irgendwo rein deswegen einfach utils
und natürlich auch damit du nicht in jeden cog das gleiche zeug rein kopierst
so wenig Redundanz (doppelungen) wie möglich
ah ich hatte sogar eine solche datei die hies nur bei mir import_file XD
Weiß jemand, wie man das mit Pre-Commit im vs-Code macht?
wie was geht
klartext bitte
ja musst du mehr erklären
wie was genau funkt.
@lucid furnace https://youtu.be/Jd_F0Ecur6s
Mein Discord Server
► https://discord.gg/zfvbjTEzv6
Links aus diesem Video
Git Download ► https://git-scm.com/downloads
Pre-Commit Beispiel-Datei ► https://github.com/tibue99/ezcord/blob/main/.pre-commit-config.yaml
Standard Pre-Commit Hooks ► https://github.com/pre-commit/pre-commit-hooks
▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬
Mein Hosting* ► https://tidd.ly...
so wie hier
await ctx.respond(embed=embed, ephemeral=True, view=modrole())```
mehr code?
Was sollen wir damit anfangen?
- Error. (wenn gegeben)
- mehr Code.
- Dein Problem am besten genau schildern, statt garnichts zu schreiben.
ja morgen bin nicht an mein pc
bot offline
Nein bot war on
okay
Moin, ich versuche grad nh SlashCommand Gruppe zu machen wo der haupt command ein eigener befehl ist.
Heißt es gibt in dem fall /backup und dann halt /backup show, /backup load usw. Hat jmd. nen Plan wie das gehen könnte?
würde einf eine slashcmdgroup machen und den anderen normal
wird sehr wahrscheinlich nicht funktioneiren weil das dann als 2 einzelne commands gilt aber beide den glecihe namen haben was nicht erlaubt ist
Doch das geht mit SlashCommandGroup und Multicog
Liebe Community,
Ich benötige eure Hilfe! Ich möchte sicherstellen, dass nur der Ticketbesitzer auf die Buttons in meinem Discord-Server klicken kann. Kann mir jemand erklären, wie ich das erreichen kann?
Vielen Dank im Voraus für eure Unterstützung! ```py
class frageticket(discord.ui.View):
def init(self):
super().init(timeout=None)
async def check_user_permissions(self, interaction):
ticket_opener_id = None
channel = interaction.channel
if channel.topic and channel.topic.startswith("Ticket opened by"):
ticket_opener_id_str = channel.topic.split(":")[-1].strip()
if ticket_opener_id_str.isdigit():
ticket_opener_id = int(ticket_opener_id_str)
return interaction.user.id == ticket_opener_id
@discord.ui.button(label="Yes, I still have questions", style=discord.ButtonStyle.primary, row=1, emoji="🎟️", custom_id="frage_ticket")
async def ask_back(self, button, interaction):
has_permissions = await self.check_user_permissions(interaction)
if not has_permissions:
await interaction.response.send_message("You are not authorized to this ticket.", ephemeral=True)
return
embed = discord.Embed(
title="Ask questions",
description=f"All clear {interaction.user.mention}, you can now ask your questions.",
color=discord.Color.green()
)
await interaction.response.send_message(embed=embed)
@discord.ui.button(label="No, all done", style=discord.ButtonStyle.green, row=1, emoji="✅", custom_id="no_ticket")
async def no_back(self, button, interaction):
has_permissions = await self.check_user_permissions(interaction)
if not has_permissions:
await interaction.response.send_message("You are not authorized to this ticket.", ephemeral=True)
return
server_id = interaction.guild.id
await asyncio.sleep(1)
await interaction.channel.delete()``` hab es bist jerzt so aber er sagt ich nicht er owner
Guten Tag zusammen,
Ich bin schon seit rund 2 Wochen an meinem Discord Bot dran und alleine komme ich einfach nicht weiter.
Mir ist es bewusst, dass es vermutlich gegen die Regeln verstösst nach einem ganzen Code zu fragen, jedoch komme ich einfach nicht weiter und ich habe das Gefühl, dass ich nur hier weiterkommen kann.
Ich habe den Bot aus diesem ElevenLabs Video nach programmiert:
https://www.youtube.com/watch?v=O2CVFbMzFNE&t=87s
Ich habe anschliessend eine Frage in den Kommentaren gestellt und mir wurde das Radio Musik Bot Video empfohlen.
https://www.youtube.com/watch?v=l5nETxl7NHM&t=309s
Mir ist jedoch sehr unklar, wie ich die beiden Tutorials kombinieren könnte.
Der Bot sollte einfach nach dem ausführen des Commands eine Audio generieren und diese im Voice Channel wo sich der Nutzer befindet abspielen. Extras wären, dass nur eine spezifische Rolle seine Commands ausführen kann und nur der Nutzer der den Command ausgeführt hat die Nachrichten des Bots im Chat sieht.
Falls sich hier jemand gut mit den beiden Bots auskennt und mir eventuell eine kombinierte Version schicken könnte, wäre das sehr, sehr nice. Falls jemand aber auch irgendwelche Hinweise und / oder Tipps hat wäre ich dafür ebenfalls sehr dankbar. Ich bin relativ neu in Python und ich weiss selber nicht, warum ich direkt in ein solches grosses Projekt reingegangen bin.
Hi @thin silo ,
um dir besser helfen zu können, benötigen wir den relevanten Code. Bitte teile uns den Code mit, den du bearbeiten möchtest, und wir werden unser Bestes tun, um dir zu helfen.
Vielen Dank!
Danke für die schnelle Antwort,
Also dies ist der Code des Radio Bots. Dieser spielt hier Musik ab:
import discord
from discord.ext import commands
from discord.commands import slash_command
class Radio(commands.Cog):
def __init__(self, bot):
self.bot = bot
@slash_command(description="Starte das Radio")
async def play(self, ctx):
if ctx.author.voice is None:
return await ctx.respond("Du musst erst einem Voice Channel beitreten.")
if not ctx.author.voice.channel.permissions_for(ctx.guild.me).connect:
return await ctx.respond("Ich habe keine Rechte, um deinem Channel beizutreten.")
if ctx.voice_client is None:
await ctx.author.voice.channel.connect() # Bot ist in keinem Voice Channel
else:
await ctx.voice_client.move_to(ctx.author.voice.channel) # Bot ist schon in einem anderen Voice Channel
if ctx.voice_client.is_playing():
ctx.voice_client.stop()
ctx.voice_client.play(
discord.FFmpegPCMAudio("https://streams.ilovemusic.de/iloveradio1.mp3")
)
await ctx.respond("Das Radio wurde gestartet")
@slash_command(description="Stoppe das Radio")
async def leave(self, ctx):
if ctx.voice_client is None:
return await ctx.respond("Ich bin mit keinem Voice Channel verbunden.")
await ctx.voice_client.disconnect()
await ctx.respond("Bis bald")
def setup(bot):
bot.add_cog(Radio(bot))
Mein Ziel ist es jedoch, dass er die generierten Audios des ElevenLabs Bots abspielt statt Musik:
import io
import discord
import elevenlabs
from discord.commands import slash_command, option
from discord.ext import commands
elevenlabs.set_api_key("") # hier den api key einfügen
CHOICES = [
discord.OptionChoice(name=voice.name, value=voice.voice_id) for voice in elevenlabs.voices()
if voice.category != "premade"
][:25]
class ElevenLabs(commands.Cog):
def __init__(self, bot):
self.bot = bot
@slash_command()
@option("text")
@option("voice", choices=CHOICES)
async def voice(self, ctx, text: str, voice: str):
await ctx.defer()
output = elevenlabs.generate(
text=text,
voice=elevenlabs.Voice(
voice_id=voice,
settings=elevenlabs.VoiceSettings(
stability=0.71, similarity_boost=0.5, style=0.0, use_speaker_boost=True
),
),
model="eleven_multilingual_v2",
)
await ctx.respond(
file=discord.File(io.BytesIO(output), filename="voice.mp3")
)
def setup(bot):
bot.add_cog(ElevenLabs(bot))
Mir wurde von CodingKeks auf Youtube gesagt, ich müsste die Dateipfade umändern aber davon habe ich leider sehr wenig Ahnung.
Extras wären, dass nur eine spezifische Rolle seine Commands ausführen kann und nur der Nutzer der den Command ausgeführt hat die Nachrichten des Bots im Chat sieht.
Ich hoffe hier endlich eine Lösung zu finden nach vielen schlaflosen Nächten Internet-Surfen...
import io
import discord
import elevenlabs
from discord.commands import slash_command, option
from discord.ext import commands
elevenlabs.set_api_key("") # Hier den API-Schlüssel einfügen
CHOICES = [
discord.OptionChoice(name=voice.name, value=voice.voice_id) for voice in elevenlabs.voices()
if voice.category != "premade"
][:25]
class ElevenLabs(commands.Cog):
def __init__(self, bot):
self.bot = bot
@slash_command()
@option("text")
@option("voice", choices=CHOICES)
async def voice(self, ctx, text: str, voice: str):
await ctx.defer()
output = elevenlabs.generate(
text=text,
voice=elevenlabs.Voice(
voice_id=voice,
settings=elevenlabs.VoiceSettings(
stability=0.71, similarity_boost=0.5, style=0.0, use_speaker_boost=True
),
),
model="eleven_multilingual_v2",
)
audio_data = io.BytesIO(output)
audio_source = discord.FFmpegPCMAudio(audio_data)
if ctx.author.voice and ctx.author.voice.channel:
vc = await ctx.author.voice.channel.connect()
vc.play(audio_source)
else:
await ctx.respond("Du musst in einem Voice-Channel sein, um diesen Befehl zu verwenden.")
def setup(bot):
bot.add_cog(ElevenLabs(bot))
@thin silo
so soll es gehen
Ich werde es sofort probieren, tausend Dank dir jetzt schon 
ich muss noch kurz meine arbeit verrichten ich melde mich in kürze
ping mich einfach
Weiß jemand wie die Discord Font heißt
Findest du hier
Musst nur einmal googlen und du findest es
Hab ich hab's aber nicht gefunden
ich hab nicht mal 30 sekunden gebraucht
ok
Wie soll das damit gehen?
Wenn du einen normalen Slashcommand hast und 1 SlashCommandGroup für 2 Commands mit dem gleichen Namen geht das
Habe es selber schon benutzt und hinbekommen
Das sind dann trotzdem 2 verschieden commands mit dem selben Namen, was nicht erlaubt ist
Und das ist ja um groups in mehreren cogs zu verwenden, hat nichts mit meiner Frage zu tun
Wenn du mehrere Commands haben möchtest mit gleichen namen, dann brauchst du SlashCommandGroup mit der pycord-multicog library
Oder was glaubst du wie hat Timo mehrere Commands die gleich anfangen
Es hat was mit deiner Frage zu tun, denn wenn du Multicog benutzt und mehrer commands machst die mit Backup anfangen zahlt dies als eine Gruppe und dafür auch die multicog Library, weil es ohne nicht geht
Das ist ja kein Problem zu machen. Ich möchte ja aber nicht nur mehrere die gleich anfangen sondern auch noch einen der nur „Backup“ heißt ist
Ich verstehe nicht ganz warum er eine ectra library dafür nutzen muss?
Seine Frage war ja nur, wie man halt Slash command groups macht.
Dafür benötigt man doch keine extra library
Kannst du mir dann ein Beispiel zeigen evtl? Ganz normal Gruppe in mehreren cogs ist wie gesagt nicht mein Problem
War nicht meine Frage
Siehe hier
Is doch deine Frage?
Oder verstehe ich was falsch? xD
Es soll /backup geben, und /backup load, /backup save und so weiter
Mit geht es nur darum diesen einzelnen backup command nutzen zu können in discord
@solid ingot sorry für den Ping aber du bist der discord bot König, weißt du was ich meine und kannst mir vlt helfen?
glaub das geht nicht

Hat das evtl was damit zu tun?
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...
@ruby sparrow habe jetzt den code getestet und der bot denkt die ganze zeit nur nach
habe alles installiert inklusive ffmpeg was echt nicht leicht war
@slash_command(description = "Versuche jemandem Credits zu klauen.")
@commands.cooldown(2, 24 * 60 * 60, commands.BucketType.user)
async def steal(self, ctx, stealuser: discord.User):
async with aiosqlite.connect("economy.db") as db:
steal_chance = random.randint(1, 100)
if(steal_chance <= 30):
steal_win = True
else:
erwischt_credits = random.randint(10, 20)
await db.execute(
"UPDATE credits SET credits = credits - ? WHERE user_id = ?", (erwischt_credits, ctx.author)
)
await ctx.respond(f"Du kleiner kobold hast es nicht geschafft haha! Er hat dich erwischt und du gibst ihm {erwischt_credits} Credits")
return
credits_stolen = random.randint(10, 20)
await db.execute(
"UPDATE credits SET credits = credits - ? WHERE user_id = ?", (credits_stolen, stealuser.id)
)
await db.execute(
"UPDATE credits SET credits = credits + ? WHERE user_id = ?", (credits_stolen, ctx.author.id)
)
await db.commit()
embed = discord.Embed(title="Geklaut", description=f"Du hast {credits_stolen} Credits von {stealuser.mention} geklaut!", color=discord.Color.yellow())
await ctx.respond(embed = embed)
wenn es erfolgreich war funktioniert alles aber wenn nicht antwortet er nicht
(kein error)
Wie kann ich bei ezcord jetzt schon i18n verwenden also was muss in die requirements.txt
import io
import discord
import elevenlabs
from discord.commands import slash_command, option
from discord.ext import commands
elevenlabs.set_api_key("1234567890") # Hier den API-Schlüssel einfügen
CHOICES = [
discord.OptionChoice(name=voice.name, value=voice.voice_id) for voice in elevenlabs.voices()
if voice.category != "premade"
][:25]
class ElevenLabs(commands.Cog):
def __init__(self, bot):
self.bot = bot
@slash_command()
@option("text")
@option("voice", choices=CHOICES)
async def voice(self, ctx, text: str, voice: str):
await ctx.defer()
output = elevenlabs.generate(
text=text,
voice=elevenlabs.Voice(
voice_id=voice,
settings=elevenlabs.VoiceSettings(
stability=0.71, similarity_boost=0.5, style=0.0, use_speaker_boost=True
),
),
model="eleven_multilingual_v2",
)
audio_data = io.BytesIO(output)
audio_source = discord.FFmpegPCMAudio(audio_data)
if ctx.author.voice and ctx.author.voice.channel:
vc = await ctx.author.voice.channel.connect()
vc.play(audio_source)
else:
await ctx.respond("Du musst in einem Voice-Channel sein, um diesen Befehl zu verwenden.")
def setup(bot):
bot.add_cog(ElevenLabs(bot))
kann mir wer erklären warum der bot hier die ganze zeit nachdenkt nach einem command?
hey kann mir einer Helfen will ein Ticket system Mit mehreren Catergoryn machen
weil du nur ein mal respond
wie viele brauche ich und wo?
du muss immer auch ein commad respond
Kann dir helfen ja
kann mir da jemand helfen?
das sind leider die prefix groups, nicht die für slashcommands
Im Grunde genau wie beim Master Branch, nur mit @i18n dahinter
ezcord @ git+https://github.com/tibue99/ezcord@i18n
WHERE user_id = ? muss durch ctx.author.id angegeben werden. ctx. author kann sqlite in einem feld das für zahlen konfiguriert wurde nicht speichern.
Danke, teste ich gleich (hat funktioniert :) )
kann man mit einer webseite oder so die cpu vom server tracken? falls ja gerne ein link oder namen geben
Mit nodejs geht das so
const express = require('express');
const os = require('os');
const app = express();
const port = 3000;
app.get('/', (req, res) => {
const cpuUsage = os.loadavg()[0];
res.send(`CPU-Auslastung: ${cpuUsage.toFixed(2)}%`);
});
app.listen(port, () => {
console.log(`Server läuft auf http://localhost:${port}`);
});
Stark aber bringt mir nichts
Sonst ka sry
f"{psutil.cpu_percent()}%"```
so tracke ich die vom panel bzw vom discord bot
Hmm wollte eig ein verlauf haben über mehrere Stunden
ist dir die wollen ausgegangen
wie kann man des fixen
ka
was bist du denn für ein helfer 
kann mann net fixen
dch muss
Nöö muss man ned. 😄
Ja @fierce dove ist ziemlich abgehoben ey. Böser Timo! 
Habe es auch, aber dein Code funktioniert trotzdem ohne Probleme
wie mache ich, dass der bot beim start alle nachrichten aus einem channel löscht?
Mach ein on_ready Event. Nimm die Channel history und lösche alle Nachrichten
Habe das auf stack overflow gefunden, baue`s jetzt um:
@client.command()
async def keyword(ctx, *, word: str):
channel = client.get_channel(730839966472601622)
messages = await ctx.channel.history(limit=200).flatten()
for msg in messages:
if word in msg.content:
print(msg.jump_url)
hat geklappt :)
war sogar ziemlich intuitiv
er macht nix >:(
@slash_command(description="Lösche eine Bestimmte Anzahl an Nachrichten")
async def cls(self, ctx, nachrichten: Option(int, description="Anzahl an Nachrichten", min=1, max=100)):
await ctx.channel.purge(limit=nachrichten)
await ctx.respond(f"{nachrichten} Nachrichten wurden gelöscht!", ephemeral = True)
Nice
@bot.slash_command(name="timeout", description="Timeouts a user")
@commands.has_permissions(kick_members=True)
async def timeout(ctx, user: discord.Member, duration: str):
duration_dict = {"s": 1, "m": 60, "h": 3600, "w": 604800}
unit = duration[-1]
time_value = int(duration[:-1])
timeout_duration = time_value * duration_dict.get(unit, 60)
await user.timeout(timeout_duration, reason="Timeout")
@timeout.error
async def timeout_error(ctx, error):
if isinstance(error, commands.MissingPermissions):
await ctx.respond("you don't have permission to timeout users.")``` kann mir wer sagen warum es nicht geht? `The application did not respond`
Die Applikation antwortet nicht weil du nicht antwortest
Ganz einfach. In dem timeout command hast du kein ctx.respond🤷♂️
ja aber es tinmeouted auch nicht
Ne
Weil du timeout falsch benutzt
wie mach ich es richtig?
Indem du die docs ließt:
https://docs.pycord.dev/en/stable/api/models.html#discord.Member.timeout
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 ...
Timeout sowie timeout_for wollen datetime Objekte haben und keine Sekunden
import discord
from discord.ext import commands
import random
import asyncio
import datetime
from discord.commands import slash_command
class ticket(commands.Cog):
def __init__(self, bot):
self.bot = bot
@slash_command(description="")
async def ticket(self, ctx):
modal = ticketmodal(title="Frage etwas")
await ctx.send_modal(modal)
def setup(bot):
bot.add_cog(ticket(bot))
class ticketmodal(discord.ui.Modal):
def __init__(self, *args, **kwargs):
super().__init__(
title="Frage etwas",
components=[
discord.ui.InputText(
label="Ticket",
placeholder="Problem",
style=discord.InputTextStyle.paragraph,
)
],
)
async def callback(self, interaction: discord.Interaction):
await interaction.response.send_message(f"{self.children[0].value}")
Ich sehe den command nicht, schon öfter in discord strg+r versucht. Kein error, was ist falsch
Vlt wird das nicht als Extension geladen?
Oder gehen andere cogs?
ja, andere gehen.
@solid ingot soll man schon auf py-cord 2.5 gehen ?
es kann wegen die discord aip sein
ja eig gibt es keine gründe warum nicht
ok danke
Gibt es irgendwie die Möglichkeit, dass ein Slash Command nur in den guilds/Servern angezeigt wird die in einer bestimmten Datenbank stehen?
ich glaube nicht!
doch klar!
@slash_command(name="dein command name", description="deine beschreibung", guild_ids=guilds)
# guilds muss eine Liste sein in der sich die IDs als integer befinden. Diese müssen vorher aus deiner Datenbank geladen werden.
es sagt ich glaube nicht
Poah danke, du rettest mir mein Leben!
Gerne
mach statt
min_value=..., max_value=...) = 6
min_value=..., max_value=..., default=6)
ändert nix
zeig mal
ka was ich dir zeigen soll es hat sich nichts daran geändert das es gelb unterstrichen ist das Option
ist seitdem python 3.12 raus kam
@discord.ui.button(label="Close", style=discord.ButtonStyle.blurple, emoji="🔐", row=1, custom_id="close_ticket")
async def close_ticket(self, button, interaction):
server_id = interaction.guild.id
team_role_id = await db.get_teamrole(interaction.guild.id)
if team_role_id in [role.id for role in interaction.user.roles]:
server_name = await db.get_server_name(server_id)
if server_name:
channel_id = await db.get_log_channel(server_id)
if channel_id:
channel = await db.get_log_channel(interaction.guild.id)
if channel:
ticket_opener = await db.get_ticket_opener(channel_id)
embed = discord.Embed(
title="Close Ticket",
description="Deleting Ticket in less than `5 Seconds`... ⏳\n\n"
"_If not, you can do it manually!_",
color=discord.Color.dark_red()
)
await interaction.response.send_message(embed=embed, ephemeral=True)
await asyncio.sleep(5)
await interaction.channel.delete()
transcript = await chat_exporter.export(interaction.channel)
if transcript is None:
return
transcript_file = discord.File(
io.BytesIO(transcript.encode()),
filename=f"transcript-{channel.name}.html",
)
log_channel_id = await db.get_log_channel(server_id)
log_channel = interaction.client.get_log_channel(log_channel_id)
message = await log_channel.send(file=transcript_file)
link = await chat_exporter.link(message)
userembed = discord.Embed(
title="Your Ticket has been Closed",
description=f"Your ticket at {server_name} has been closed.\n"
f"```{channel.name}```\n"
f"You can find the transcript [here]({link}).",
color=discord.Color.blue(),
)
if ticket_opener:
user = interaction.guild.get_member(ticket_opener)
if user:
await user.send(embed=userembed)
else:
await interaction.response.send_message("The ticket channel was not found.", ephemeral=True)
else:
await interaction.response.send_message("The channel ID was not found in the database.", ephemeral=True)
else:
await interaction.response.send_message("The server name was not found in the database.", ephemeral=True)
else:
await interaction.response.send_message("You do not have permission to close this ticket.", ephemeral=True)``` ich komme nicht mehr wieder
Ignoring exception in view <Ticket timeout=None children=3> for item <Button style=<ButtonStyle.primary: 1> url=None disabled=False label='Close' emoji=<PartialEmoji animated=False name='🔐' id=None> row=1>:
Traceback (most recent call last):
File "C:\Users\nicor\AppData\Local\Programs\Python\Python311\Lib\site-packages\discord\ui\view.py", line 426, in _scheduled_task
await item.callback(interaction)
File "c:\Users\nicor\OneDrive\Desktop\Flexii\cogs\admin\ticket.py", line 301, in close_ticket
transcript = await chat_exporter.export(interaction.channel)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\Users\nicor\AppData\Local\Programs\Python\Python311\Lib\site-packages\chat_exporter\chat_exporter.py", line 83, in export
await Transcript(
File "C:\Users\nicor\AppData\Local\Programs\Python\Python311\Lib\site-packages\chat_exporter\construct\transcript.py", line 161, in export
self.messages = [message async for message in self.channel.history(
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\Users\nicor\AppData\Local\Programs\Python\Python311\Lib\site-packages\chat_exporter\construct\transcript.py", line 161, in <listcomp>
self.messages = [message async for message in self.channel.history(
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\Users\nicor\AppData\Local\Programs\Python\Python311\Lib\site-packages\discord\iterators.py", line 123, in __anext__
return await self.next()
^^^^^^^^^^^^^^^^^
File "C:\Users\nicor\AppData\Local\Programs\Python\Python311\Lib\site-packages\discord\iterators.py", line 331, in next
await self.fill_messages()
File "C:\Users\nicor\AppData\Local\Programs\Python\Python311\Lib\site-packages\discord\iterators.py", line 354, in fill_messages
data = await self._retrieve_messages(self.retrieve)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\Users\nicor\AppData\Local\Programs\Python\Python311\Lib\site-packages\discord\iterators.py", line 378, in _retrieve_messages_before_strategy
data: list[MessagePayload] = await self.logs_from(
^^^^^^^^^^^^^^^^^^^^^
File "C:\Users\nicor\AppData\Local\Programs\Python\Python311\Lib\site-packages\discord\http.py", line 369, in request
raise NotFound(response, data)
discord.errors.NotFound: 404 Not Found (error code: 10003): Unknown Channel```
Schau dir doch mal deinen Code an.
Du löscht den Channel und möchtest dann auf den Channel zugreifen?
er channel wird gelöscht aber diese Fehlermeldung kommt
ja wie soll er ein transkript von einen gelöschten channel erstellen xD
ja stimmt sry
@slash_command(name="welcome-message", description="[ADMIN] Set the welcome message for this server")
@default_permissions(administrator=True)
async def welcomeMessage(self, ctx):
# Create the embed
welcomeMessageMenu = discord.Embed(
title="Welcome Message",
description=f"""
:pin: x Manage your Welcome Message here!
""",
colour=colour
)
welcomeMessageMenu.set_footer(text=footer)
welcomeMessageMenu.set_thumbnail(url=thumbnail)
image = discord.File("utils/images/Logo.png", filename="Logo.png")
current_welcome_message = self.db.getWelcomeMessage(ctx.guild.id)
style = discord.ButtonStyle.green if current_welcome_message[7] == 1 else discord.ButtonStyle.red
label = "Disable Welcome Message" if current_welcome_message[7] == 1 else "Enable Welcome Message"
await ctx.respond(embed=welcomeMessageMenu, file=image, view=self.welcomeMessageManageButton(buttoncolour=style, buttonlabel=label))
```
Wenn ich den command ein zweites mal ausführen will steht da nur in rot `Ungültiger Befehl für Interaktions-Anwendung` und der command verschwindet einfach. Wenn ich den Bot einmal neu starte kann man den command wieder einmal ausführen danach geht es wieder nicht 😢
Ja, weil du danach auf diesen Channel zugreifen willst, aber den channel gibt es ja nicht mehr!
okay ganz ganz komisch vielleicht bug von discord oder so, wenn ich das auf meinem server laufen lasse geht alles..
Jetzt habe ich es, aber ich bekomme keine Direktnachrichten und der Channel wird nicht gelöscht
code
@discord.ui.button(label="Close", style=discord.ButtonStyle.blurple, emoji="🔐", row=1, custom_id="close_ticket")
async def close_ticket(self, button, interaction):
server_id = interaction.guild.id
team_role_id = await db.get_teamrole(interaction.guild.id)
if team_role_id in [role.id for role in interaction.user.roles]:
server_name = await db.get_server_name(server_id)
if server_name:
channel_id = await db.get_log_channel(server_id)
if channel_id:
channel = await db.get_log_channel(interaction.guild.id)
if channel:
ticket_opener = await db.get_ticket_opener(channel_id)
embed = discord.Embed(
title="Close Ticket",
description="Deleting Ticket in less than `5 Seconds`... ⏳\n\n"
"_If not, you can do it manually!_",
color=discord.Color.dark_red()
)
await interaction.response.edit_message(view=self)
await interaction.followup.send(embed=embed)
transcript = await chat_exporter.export(interaction.channel)
if transcript is None:
return
transcript_file = discord.File(
io.BytesIO(transcript.encode()),
filename=f"transcript-{interaction.channel.name}.html",
)
log_channel_id = await db.get_log_channel(server_id)
log_channel = interaction.client.get_channel(log_channel_id)
message = await log_channel.send(file=transcript_file)
link = await chat_exporter.link(message)
userembed = discord.Embed(
title="Your Ticket has been Closed",
description=f"Your ticket at {server_name} has been closed.\n"
f"```{interaction.channel.name}```\n"
f"You can find the transcript [here]({link}).",
color=discord.Color.blue(),
)
print(ticket_opener)
if ticket_opener:
user = interaction.guild.get_member(ticket_opener)
if user:
print(user)
await interaction.user.send(embed=userembed)
await asyncio.sleep(5)
print("Deleting channel...")
await interaction.channel.delete()
else:
await interaction.response.send_message("The ticket channel was not found.", ephemeral=True)
else:
await interaction.response.send_message("The channel ID was not found in the database.", ephemeral=True)
else:
await interaction.response.send_message("The server name was not found in the database.", ephemeral=True)
else:
await interaction.response.send_message("You do not have permission to close this ticket.", ephemeral=True)```
hilfe ```py
raise errors.ExtensionFailed(key, e) from e
discord.errors.ExtensionFailed: Extension 'cogs.economy' raised an error: AttributeError: 'Option' object has no attribute 'name'
```py
@slash_command(description = "Gebe jemandem Credits.")
async def give(self, ctx, user: discord.User, anzahl: Option(discord.Option(description="Anzahl der Credits, die du vergeben möchtest.", required=True))):
if user.bot:
return await ctx.respond(embed = discord.Embed(title = "Schlechter Dieb", description="Du kannst einem Bot nichts klauen.", color=discord.Color.brand_red()))
if user == ctx.author:
return await ctx.respond(embed = discord.Embed(title = "Dummer Dieb", description="Du kannst dir nichts klauen.", color=discord.Color.brand_red()))
async with aiosqlite.connect("economy.db") as db:
await db.execute(
"UPDATE credits SET credits = credits + ? WHERE user_id = ?", (anzahl, user.id)
)
await db.execute(
"UPDATE credits SET credits = credits - ? WHERE user_id = ?", (anzahl, ctx.author.id)
)
embed = discord.Embed(title="Gefettfingert", description=f"Du hast {user.mention} {anzahl} Credits gegeben, Cheers!", color=discord.Color.yellow())
await ctx.respond(embed = embed)
await db.commit()
Schick mal ganzen error
hast du schon mal mit dem bot per dm geschrieben?
ja
jo, sekunde
@slash_command(description = "Gebe jemandem Credits.")
async def give(self, ctx, user: discord.User, anzahl: Option(int, description="Anzahl der Credits, die du vergeben möchtest.", required=True)):
if user.bot:
return await ctx.respond(embed = discord.Embed(title = "Schlechter Dieb", description="Du kannst einem Bot nichts klauen.", color=discord.Color.brand_red()))
if user == ctx.author:
return await ctx.respond(embed = discord.Embed(title = "Dummer Dieb", description="Du kannst dir nichts klauen.", color=discord.Color.brand_red()))
async with aiosqlite.connect("economy.db") as db:
await db.execute(
"UPDATE credits SET credits = credits + ? WHERE user_id = ?", (anzahl, user.id)
)
await db.execute(
"UPDATE credits SET credits = credits - ? WHERE user_id = ?", (anzahl, ctx.author.id)
)
embed = discord.Embed(title="Gefettfingert", description=f"Du hast {user.mention} {anzahl} Credits gegeben, Cheers!", color=discord.Color.yellow())
await ctx.respond(embed = embed)
await db.commit()
hast du denn dein dm channel auf alle
@cloud cedar
danke :)
gehts
hm
lucky lost
würde das send beim user mit try except machen 🙂
geht immer doch nicht
er müsste aber den channel dann löschen wenn es try except ist
.
user nichts anderes habe ich geschrieben..
nur user nix anderes 🤔
seit wann kann ein bot ein user löschen 🤔
try:
user.send()
except:
...
code geht hier weiter
sonst bringt des try except wenig xD
so ?
Wie kann man mit ezcord nochmal einen command anklickbar machen in einer nachricht?
get_cmd ig
ich würde es so machen @ruby sparrow
{self.bot.get_cmd('test')}``` so
danke
bei button muss interaction
wahr nur test