#Allgemeine Hilfe

1 messages · Page 70 of 1

tawdry leaf
#

Hast du den error mal gegooglet 😅

#

@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

thick haven
tawdry leaf
#

Kannst ja da mal lesen was die so schreiben zu den error

thick haven
#

das macht null sinn

thick haven
#

gefixt

thin silo
#

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:

https://youtu.be/O2CVFbMzFNE?si=Y5G0nhszU28dU_or

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-...

▶ Play video
thin silo
#

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?

jade mantle
#

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

thin silo
#

ja ich nutze code oss, kann man nicht einfach unten den bot.run verwenden?

jade mantle
#

ja kann man

thin silo
#

ja ist nicht so sicher aber ich nutze den bot nur mit so 5 engen freunden, sollte nix passieren

jade mantle
#

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

thin silo
#

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

jade mantle
thin silo
#

ja voll

#

wie formatiert man schon wieder code

jade mantle
#

mit drei ```

lucid furnace
#

wie hast du die drei ` da so hingeschrieben

jade mantle
lucid furnace
#

\´´´

thin silo
#
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
lucid furnace
#

``````

jade mantle
#

ganz oben z.b. bot = commands.Bot()

lucid furnace
#

warte wie sieht seine code struktur aus

thin silo
#

ist die vom video lol

thin silo
lucid furnace
#

nein mach mal ein bild von dem ordner die du hast

jade mantle
lucid furnace
#

wollt grade sagen lmao

jade mantle
#

hä aber es hat ja bot.run

thin silo
#

jo warte

jade mantle
lucid furnace
#

ja weil er dachte safe das kommt da rein

thin silo
jade mantle
#

dann musst du noch

lucid furnace
#

benutzt er ezcord oder py-cord

thin silo
#

wie mache ich das gibt es ein video dazu

jade mantle
thin silo
#

pycord

jade mantle
#

glaube hier ist es drin

thin silo
#

warte was das main.py nicht für den token? den habe ich ja unten definiert nicht?

jade mantle
#

wie meinst du

lucid furnace
thin silo
#

achso

#

ja ich schaue mir einfach mal das video an

jade mantle
#

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

thin silo
#

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?

jade mantle
thin silo
#

also der ganze code?

thin silo
#

achso ja oben

jade mantle
#
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

lucid furnace
#
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
thin silo
#

was ist das für ein code? für die main.py oder was

lucid furnace
thin silo
#

okay die erstelle ich einfach und dann kann ich den bot ausführen?

lucid furnace
#

noch nicht ganz aber ja

thin silo
#

oke ich probiere es mal

lucid furnace
#

wenn du gemacht hast mach mal ein screenshot von deiner ordner struktur

jade mantle
#

du brauchst dann noch die .env datei, vergiss die nicht

thin silo
jade mantle
#

die ist dann TOKEN="DEINTOKEN"

lucid furnace
#

es sollte ungefähr so ausehen

main.py
.env
cogs
  - ElevenLabs.py```
lucid furnace
jade mantle
#

ach so ja stimmt

thin silo
#

also TOKEN=DEINTOKEN

lucid furnace
#

ja

thin silo
#

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

thin silo
#

was ich auch nict verstehe ist, wo im code denn die main.py angesprochen wird, über das cog oder so?

jade mantle
jade mantle
ruby sparrow
#

nehme ich auch mal an

jade mantle
#

normaler weise heisst das venv aber ka

ruby sparrow
#

ka

#

ich mache nicht PyCharm

thin silo
#

man kann doch die py env so nennen wir man will lol

thin silo
jade mantle
#

wie meinst

thin silo
#

achsoo

jade mantle
thin silo
#

jetzt will findet er dotenv nicht

#

der elevenlabs code

jade mantle
#

der muss in den cogs ordner

thin silo
#

ich brauche nen cogs ordner oke

#

ist dotenv von irgendnem programm oder so

jade mantle
#

dotenv ist eig vorinstalliert

thin silo
#

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

jade mantle
#
@commands.has_permissions(kick_members=True)```
#

und dann z.b. kick_members=True

thin silo
#

also ich meine, man muss Rolle A haben um den bot zu verwenden

#

mit role id oder so

limber crow
thin silo
#

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

thin silo
limber crow
# thin silo 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))
thin silo
#

das tue ich auch in den cog ordner?

limber crow
thin silo
#

also in meinem main code oder als eigene file im cog ordner

limber crow
# thin silo 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)
old ore
#

Moin Moin wollte mal fragen ob nicht geschlossene Db Connections für erhöhten thread und cpu verbrauch verantwortlich sein können

viscid lake
#

frage wenn ich bei ezcord 2 abfragen habe wie kann ich es machen das die aus 2 verschiedenen dbs geht

ruby sparrow
thin silo
limber crow
novel ore
#

@solid ingot brauch ich für das sprachen ding von ezcord python 3.12? Weil das haben manchge gesagt

solid ingot
#

nein, aber es geht auch mit python 3.12

novel ore
solid ingot
#

ja

novel ore
solid ingot
#

das ist jetzt nicht besonders konkret

novel ore
solid ingot
novel ore
#

@solid ingot

solid ingot
#

self.localize_commands muss hinter load_cogs

novel ore
solid ingot
#

welche sprache hat der discord client?

novel ore
solid ingot
#

okay gut, aber welche sprache hat denn jetzt der discord client? xD

novel ore
#

Wie meinste, ich hab meine Sprache auf Deutsch

solid ingot
#

ja das meinte ich

#

dann brächte ich einmal den code von der ganzen command group mit allen commands

viscid lake
# solid ingot du musst dann die abfrage in 2 verschiedenen klassen machen, oder in der einen k...

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()```
solid ingot
novel ore
viscid lake
solid ingot
solid ingot
viscid lake
solid ingot
#

und was genau klappt nicht

novel ore
novel ore
#

perfekt danke

viscid lake
#

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

solid ingot
#

hm ich denke dass hat nichts damit zu tun dass du 2 DBs hast, da ist wahrscheinlich einfach deine anfrage falsch

viscid lake
#

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```
novel ore
solid ingot
#

ne nur bei den commands

cloud cedar
#

kann ich irgendwie machen, dass der bot die nachricht 5 sekunden nach senden wieder löscht?

cloud cedar
ruby sparrow
#
await asyncio.sleep(5)
        await ctx.delete()``` zb so @cloud cedar
cloud cedar
jade mantle
ruby sparrow
#

er hat doch gesagt dem bot

ruby sparrow
jade mantle
ruby sparrow
#

haha

limber crow
#

Wie kann ich nach einem Bot neustart, dass select menu immer noch nutze ohne es zu senden ?

cloud cedar
limber crow
cloud cedar
cloud cedar
#

müsste er da erklären

ruby sparrow
limber crow
ruby sparrow
#

Wie kann ich den Benutzer + die Rolle über dem embed anpingen lassen?

stoic stratus
#

wie meinst du ?

#

über dem embed ein Ping ?

#

als message ?

ruby sparrow
#

ju

limber crow
stoic stratus
#
            msg = await ticket_channel.send(f"{teamroletag}{interaction.user.mention}")```
ruby sparrow
#

halt so @stoic stratus

stoic stratus
#

Ja so ist das wie bei mir

ruby sparrow
#

kann man es auch für db machen ?

cloud cedar
#

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.
stoic stratus
#
<@&{teamroletag}}>```
ruby sparrow
stoic stratus
#
            teamroletag = f"<@&{teamroleID9}>"```
stoic stratus
#
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]}")


ruby sparrow
#

@cloud cedar send mal uns dem ganze code

cloud cedar
#
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]}")
ruby sparrow
#

ich wurde es mit buttons machen

stoic stratus
#

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
        )
cloud cedar
stoic stratus
#

schick uns mal den error

novel ore
#

@solid ingot Kann ich in der yaml wenn ich das so habe dort irgendwie leicht fields hinzufügen

solid ingot
#

ja klar, wenn du wissen willst wie die struktur dafür ist, mahc mal bei irgendeinem embed embed.to_dict()

novel ore
cloud cedar
#

wie krieg ich alle user auf den servern auf denen mein botti ist

solid ingot
cloud cedar
sterile flax
#

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

novel ore
sterile flax
#

nein Terminal ausgabe

cloud cedar
# tawdry leaf code?

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)
 


novel ore
#

Und dann noch len drum

cloud cedar
#

probiere

#

danke

#

es funktioniert :)

novel ore
#

Kein Ding

sterile flax
#

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

native inlet
sterile flax
#

wo sehe ich das?

native inlet
#

Das sollte man eigentlich wissen wenn man mit python programmiert

sterile flax
#

ach doch stimmt stand gerade auf dem schlauch habe version 3.12.1

native inlet
#

Du kannst py-cord nur mit Version 3.8-3.11 nutzen

sterile flax
#

ach ok wie update ich?

native inlet
#

Findest du im Internet

sterile flax
#

ok danke

tawdry leaf
#

,

ruby sparrow
#
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())```
native inlet
native inlet
ruby sparrow
native inlet
ruby sparrow
#

bei mir aber nicht

native inlet
#

Du hast nur den Anfang des Errors geschickt

ruby sparrow
#

oh vergessen zu rein senden sry

#

da ist er jerzt dem ganze error

native inlet
ruby sparrow
cloud cedar
#

ein callback haben

ruby sparrow
native inlet
#

😄

ruby sparrow
#

aso jerzt ich weiss du wie du meiste ok ..

native inlet
#

Müsste in das Callback nicht noch als Parameter select rein?

odd kiteBOT
#
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}")```
native inlet
#

Also wie hier

ruby sparrow
#

hm stimmt

#

jerzt geht

#

danke

ruby sparrow
#

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)

ruby sparrow
#

@stoic stratus weiss du villt ?

stoic stratus
#

nope

#

gerade nicht

tawdry leaf
old ore
# ruby sparrow <@871373472658501663> weiss du villt ?

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)```
ruby sparrow
old ore
#

merkst du etwas?🤣

ruby sparrow
#

np

old ore
thin silo
lucid furnace
#

also zb

[123, 456, 678]

ruby sparrow
#
@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
viscid lake
#

Versuch erstmal selber zu lösen

stoic stratus
#

ist nicht so schwer 🙂

#
await interaction.respond
viscid lake
#

Psst verrate es nicht

stoic stratus
#
@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)```
stoic stratus
#

XD wir wollen ja NETT sein

viscid lake
ruby sparrow
#

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()```
cloud cedar
#

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?

cloud cedar
ruby sparrow
#

hatte schon das aber geht nicht er sagt die ganze zeit das nicht er owner bin

cloud cedar
ruby sparrow
#

ich mache einfach mit db

#

es geht einfacher

cloud cedar
#

ok

cloud cedar
ruby sparrow
#
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

cloud cedar
#

danke, probiere ich ducklove

#

der bot soll selber in dem Sprachkanal sprechen, ich probiere den code umzuschreiben

ruby sparrow
#

ja du kannst ja machen es ja auch ein zb

cloud cedar
empty plaza
#

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")
odd kiteBOT
#
ruby sparrow
#

guck dir doch mal das Video an

#

*noch

lucid furnace
#

wieso ergibt ctx.author.bot false

novel ore
cloud cedar
lucid furnace
native helm
#

eine frage

lucid furnace
#

frag nach

native helm
#

wisst ihr wie man in einem bot status die server auf dem er ist.

native helm
#

jap

cloud cedar
# native helm jap

müsste len(self.bot.guilds) sein (also die länge der liste von servern)

lucid furnace
#

len(self.bot.guilds)

#

kommt drauf an ob du cog oder nd machst

native helm
#

hier ??

lucid furnace
#

ja

#

{len(bot.guilds)}

native helm
#

in die hier ""

cloud cedar
#

im f string

#

ja

#

also f"{len(bot.guilds)}"

native helm
#

jungs ist aber falsch

native helm
lucid furnace
native helm
#

es wird 0 Geprintet

cloud cedar
#

probier self.bot.guilds vielleicht

#

sicher dass er auf nem server ist?

native helm
#

ja

urban glen
native helm
urban glen
#

also geht?

ruby sparrow
#
[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()```

odd kiteBOT
#
Ezcord Master-Branch

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.
odd kiteBOT
#
Ezcord Master-Branch

Füge die folgende Zeile zu deiner requirements.txt-Datei hinzu, um den Ezcord Master-Branch zu installieren.

ezcord @ https://github.com/tibue99/ezcord```
sullen dome
#

weiß wer wie der import name heißt wo man dann so customize title bei python programmer machen kann?

viscid lake
sullen dome
#

sowas zb

#

weil es gibt eigene imports dafür soweit ich weiß

#

sicher bin ich mir auch nicht nie wirklich gebraucht

lucid furnace
sullen dome
#

dankeschön

tawdry leaf
lucid furnace
#

mit ein /-

tawdry leaf
#

😮

lucid furnace
#

da findet der das nd

tawdry leaf
#

schade

rose epoch
#

was soll ich machen in der requirements steht es drinne

jade mantle
lucid furnace
rose epoch
# lucid furnace 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```
odd kiteBOT
#

@rose epoch

Requirements-Check

⚠️ 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.*
rose epoch
tawdry leaf
#

na hör mal

lucid furnace
#

hast du discord.py und asyncio, datetime gelöscht aus der requirements.txt

rose epoch
#

ja

lucid furnace
#

hmm

#

ohne token wenn der da steht

rose epoch
tawdry leaf
#

😮

rose epoch
#

was

tawdry leaf
#

discord.Client 😄

rose epoch
#

das heißt?

tawdry leaf
lucid furnace
#

ja das stimmt

tawdry leaf
#

mit bäumen 💀

lucid furnace
#

lösch mal py-cord aus der requirements.txt und mach da discord.py rein

lucid furnace
tawdry leaf
#

seit wann geht discord.Client xD

jade mantle
rose epoch
jade mantle
jade mantle
rose epoch
#

ein discord

tawdry leaf
rose epoch
jade mantle
rose epoch
#

aber halt nur nicht bei mir

tawdry leaf
rose epoch
#

ja was soll ich da amchen

#

was soll ich da hinschrieben

tawdry leaf
#

mehr brauchst du denke ich da nicht

candid viper
tawdry leaf
rose epoch
tawdry leaf
rose epoch
#

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

tawdry leaf
#

alles löschen 🙂

rose epoch
#

und dann

tawdry leaf
#

discord

#

schreiben

candid viper
#

sollte das nicht dann klappen kannst du evtl zur Probe

import discord, *
``` Testen
rose epoch
#

bruh

#

easy wuste ichuzui29 wahr nur test

limber crow
#

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()
limber crow
lucid furnace
#

versuch nochmal

limber crow
lucid furnace
#

print mal code

limber crow
lucid furnace
#

hmm naja ich kenne mich nicht so gut mit dbs aus

limber crow
# lucid furnace 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)
lucid furnace
#

also hast du await db.execute("UPDATE tickets SET claimed = ?, teamler_id = ? WHERE user_id = ?", (1, code, ctx.author.id))

#

ja

urban glen
#

Kann ich ein Slashcommand nur für bestimmte Server einblenden lassen?

urban glen
#

Da kann eine Liste von Guild ids hin

ruby sparrow
#

kann wer helfen mit db ?

urban glen
ruby sparrow
urban glen
#

Wie lautet denn deine query zum hinzufügen einer Benutzer Id?

ruby sparrow
#
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)```
tawdry leaf
#

lass des hintere weg dann siehst du welcher conflict kommt

ruby sparrow
tawdry leaf
#
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

urban glen
#

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)
            )```
ruby sparrow
#

wie kann ich machen mit alle user id

tawdry leaf
urban glen
tawdry leaf
ruby sparrow
# urban glen keine Ahnung bin ich der Code?
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```
ruby sparrow
urban glen
#

Wie sieht denn dein setup aus

#

Also was ist der primary key von der Tabelle

tawdry leaf
urban glen
#

Ist natürlich leicht unvorteilhaft bei Tickets

lucid furnace
#

hat wer command ideen

stoic stratus
#

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 ?

tawdry leaf
#

ja

lucid furnace
#

@commands.guild_only()

tawdry leaf
#

aso du meinst nur für eine xD

stoic stratus
#
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```
lucid furnace
#

mach die id weg

stoic stratus
#

a ja

tawdry leaf
#

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

lucid furnace
#

@urban glen mach mal pip list

urban glen
stoic stratus
viscid lake
#

wasn das für ein kack

odd kiteBOT
#

@viscid lake

Ezcord Master-Branch

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.
tawdry leaf
#

Für Hosting das hier

odd kiteBOT
#
Ezcord Master-Branch

Füge die folgende Zeile zu deiner requirements.txt-Datei hinzu, um den Ezcord Master-Branch zu installieren.

ezcord @ https://github.com/tibue99/ezcord```
viscid lake
#

hab keine requirements

#

asoo

#

bruh

viscid lake
tawdry leaf
#

sieht aus als würde ein egg fehlen

viscid lake
tawdry leaf
#

Kenne mich da nicht aus

viscid lake
#

komisches egg

tawdry leaf
#

Ah Nvm er findet den Pfad nicht 😂

viscid lake
#

wie wo wat

#

wie kann man so fixen davon hab ich kp

rose epoch
#

das kommt immer wenn ich ein cmd amchen will obwohl ich überall mir perms gegeben habe

void creek
#

Ich kann es nicht Lösen

jade mantle
void creek
#

Wie denn?

jade mantle
#

ich würde einfach die ID in die liste tun

#

das "ID" braucht es gar nicht

void creek
#

Wie in die Liste

jade mantle
#

na ja channels_to_sync ist eine liste

cloud cedar
#

gumo, mein Bot pingt die rolle aber ich kriege keine benachrichtigung, wieso?

stoic stratus
#

hast du die rolle ?

cloud cedar
stoic stratus
#

schick mal deine rollen

#

als ss

cloud cedar
#

nur lfg

stoic stratus
#

hmmm

#

führ nochmal aus

cloud cedar
#

bot hat auch admin

#

ok

#

nope

stoic stratus
#

hmmm....

#

komisch

cloud cedar
#

liegts daran, dass er ein embed mitsendet? kann doch eigentlich nicht sein, oder

#

ich schick mal ne normale nachricht

stoic stratus
#

Nein am Embed liegt es nicht

#

habe es auch so

#

hat der bot perms zum Pingen der rollen ?

cloud cedar
#

ist admin

stoic stratus
#

hmm

#

dann weiß ich auch nicht wieso

cloud cedar
#

doofer bot

native inlet
# cloud cedar 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?

stoic stratus
#

er hat gesagt, dass der bot die perms hat

native inlet
#

ah das hab ich überlesen

urban glen
cloud cedar
#

hab jedem erlauben diese rolle zu erwähnen angemacht, geht trotzdem nicht

native inlet
#

Weil wenn du es jetzt aktiviert hast, wird die nachricht von davor nicht mehr gelb soweit ich weiß

viscid lake
#

Wie kann man sowas fixen

candid viper
#

intents.members = True

#

Schau ob es dann geht

cloud cedar
#

ok mach gleich

vernal rampart
#
datetime('now') > datetime('daily')
#

was macht das daily?

tawdry leaf
#

welchen Zusammenhang 🤔

vernal rampart
tawdry leaf
#

wüsste nd das es daily gibt bei datetime

vernal rampart
#

Warum kommt da None raus

odd kiteBOT
#

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

▬▬▬▬▬▬▬▬▬▬▬...

▶ Play video
slow cosmos
#

Weil so überprüfst du ob der timestamp genau 32h her ist also auf die Sekunde genau

tawdry leaf
#

wieso speicherst du nicht einf die zeit die das dann ist 🤔

cloud cedar
ruby sparrow
#
[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
stoic stratus
#

kannst du Errors lesen ?

tawdry leaf
#

xD

ruby sparrow
#

Ja geht auch aber ist ein neu error aber egal hab jetzt eh user raus gemacht

candid viper
#

Gibt es eine Seite bzw eine Liste welche Library es gibt ? Für Python ?

jade mantle
#

welche libraries es alle gibt oder welche du installiert hast?

candid viper
#

welche es gibt

#

für die die ich habe kann ich ja pip freeze nutzen

candid viper
jade mantle
#

na ja die webseite von pip halt

candid viper
jade mantle
limber crow
#

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

solid ingot
#

vlt wird die DB datei nicht gefunden

#

bzw der pfad exisitiert evtl nicht

limber crow
#

Und werden da auch nicht erstellt

solid ingot
#

code und file structure?

limber crow
#

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()
strange juniper
#

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.

ruby sparrow
#

wie geht so was

lucid furnace
#
GitHub

GitHub is where over 100 million developers shape the future of software, together. Contribute to the open source community, manage your Git repositories, review code like a pro, track bugs and fea...

ruby sparrow
#

muss es doch so sein oder @discord.default_permissions(administrator=True) oder @lucid furnace

twin slate
#

sieht richtig aus

urban glen
#

Geht auch bei buttons ect

last depot
#

Also den Ping

ruby sparrow
twin slate
#

ist der command in einer slash group?

ruby sparrow
#

ja

#

@twin slate

twin slate
#

dann liegt das daran, ich weiß aber nicht wie man das lößt

limber crow
strange juniper
#

Na dann versuchs mal mit einer Namensänderung. Beachte dazu auch groß und Kleinschreibung. Linux interessiert sowas in Dateinamen.

strange juniper
#

existiert die datei mit dem neuen namen denn? gibt es eine fehlermeldung?

strange juniper
#

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.

limber crow
strange juniper
#

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

cloud cedar
limber crow
#

Wieso wird hier Pycord Dev als Unknown gekennzeichent ?

strange juniper
limber crow
strange juniper
#

jaaaa gib mir ne sekunde das bild zu posten 😂

limber crow
#

Danke

limber crow
wintry warren
#

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

limber crow
#

bzw wie bekomme ich jetzt nen custom status hin ? Ging ja nur mit der Dev version

#

Oder geht das dann jetzt garnicht mehr ?

slow cosmos
#

Mach mal den Command /master und dann pycord auswählen

odd kiteBOT
#
Pycord Master-Branch

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.
limber crow
slow cosmos
#

ist quasi das gleiche

#

Ist halt die neueste Version von pycord

#

die noch nicht offiziell im normalen pip veröffentlicht ist

limber crow
slow cosmos
slow cosmos
#

Hm das ist komisch, bei mir funktioniert alles

wintry warren
#

Hast du die alte Version erfolgreich gelöscht?

viscid lake
#

wenn ein bot eine CPU Auslastung von 100% liegt es dann am Server oder am Code?

viscid lake
#

hmmm komisch

#

wie findest man herraus welcher code das ist

ruby sparrow
lucid furnace
#

es gibts noch @commands.has_permission()

wintry warren
viscid lake
wintry warren
#

Magst du deinen Code mal irgendwie teilen? Könnte vielleicht an einem der Listener liegen oder falscher DB-Nutzung

viscid lake
wintry warren
#

Kannst du machen

viscid lake
strange juniper
#

Kannst du deinen Code vielleicht auf github stellen oder per pastebin teilen?

strange juniper
jade mantle
viscid lake
jade mantle
viscid lake
#

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

tawdry leaf
#

Nächstes mal bitte mehr Bilder zu viel Text 4-

raven lotus
#
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

urban glen
raven lotus
#

Er ist drauf

void creek
#

Ich checke es nicht

wintry warren
lofty rock
lucid furnace
#

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
twilit anvil
#

Du musst wenn den Master Branch von beidem installieren.

lucid furnace
#

doch

#

bei pillow gehsts auch nd

solid ingot
#

ezcord sollte mit 3.12 klappen, aber bei pycord brauchst du master

lucid furnace
#

sowie aiosqlite

#

warte ich teste

odd kiteBOT
#
Pycord Master-Branch

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.
solid ingot
#

ansonsten installier doch mal die tolls aus dem error: https://visualstudio.microsoft.com/visual-cpp-build-tools/

lucid furnace
ruby sparrow
#
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()```
wintry warren
#

Hast du mal überprüft, ob das Kanalthema auch stimmt/richtig gesetzt wird?

worldly phoenix
#

@stoic stratus Monkey Markt schon geiel

stoic stratus
#

im unterricht max

#

nur resettet 😦

worldly phoenix
#

Ja immer aber voll kacke das dann reset ist

cloud prawn
#

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)```

clever parrot
cloud prawn
clever parrot
clever parrot
empty plaza
#

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?

ruby sparrow
#

Du kannst einfach dein Button mit die Datenbank verbinden

empty plaza
#

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
urban glen
#
DELETE FROM [deine tabelle] WHERE id = %s
#

damit löschst du halt einen datenbank eintrag

empty plaza
urban glen
#

UPDATE [deine tablle] SET id = null WHERE id = %s

#

so?

empty plaza
#

und was genau ist %s

urban glen
#

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

empty plaza
#

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

urban glen
empty plaza
#

Ja 3 verschiede ids und wenn man die selbe id nochmal auswählt soll die dann auf null gesetzt werden

urban glen
#

verstehe nicht

empty plaza
#

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.

wintry warren
#

Dann wäre die UPDATE-Methode vielleicht auch ganz hilfreich

stone flint
#

Kleine Frage zum Thema Ressourcen für einen Bot, Reicht es für 1 Bot 1GB Ram und 1 CPU Core als Leistung?

native inlet
stone flint
#

Okay

void creek
#

Ich will nur mein bot starten aber es geht kann mir einer helfen

novel ore
#

du hast from discord import slash_command geschrieben. Das heißt aber from discord.commands import slash_command

void creek
#

Habe aber es kommt noch ein Fehler

#

@novel ore

native inlet
novel ore
void creek
#

@novel ore beides geht nicht #1019974414487535736 message

native inlet
#

@void creek Zeig mal deine requirements.txt

Um sicherzugehen das du die richtige Lib hast

void creek
#

Ich habe kein req

native inlet
void creek
#

Das?

lofty rock
native inlet
lofty rock
native inlet
#

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

void creek
native inlet
void creek
native inlet
# void creek

Musst easy-pil logischerweise auch in deine requirements.txt eintragen

void creek
slow cosmos
void creek
#

Ne

slow cosmos
#

-_-

slow cosmos
#

und generell einfach alle python packages die du genutzt hast

void creek
#

Danke

native inlet
# void creek Danke

Und bitte schau dir erstmal Python an sich an. Denn solche errors sollte man selber lösen können

viscid lake
#

frage wenn ich ein code von einem anderen bot brauche kann ich das irgendwie importieren?

wintry warren
#

Copy & Paste?

sullen dome
#

es ergibt ein kein sinn ich geh auf genauen path von main.py trz findet er sie nicht

native inlet
#

Oder bist du im terminal im falschen ordner

sullen dome
sullen dome
#

findet sie trz nicht

ruby sparrow
#

py

#

@sullen dome

native inlet
ruby sparrow
#

Ja

#

Sry

native inlet
#

Das macht keinen Sinn

sullen dome
#

es ergibt einf mies kein sinn datei namen übereinstimmt folder weg auch trz sagt er er findet es nicht

tawdry leaf
native inlet
#

Das tut ja nix zur sache ?

sullen dome
lucid furnace
urban glen
#

@sullen dome Was ist der pfad zu deiner datei

sullen dome
urban glen
#

zeig das mal in deinem ordner

lucid furnace
urban glen
sullen dome
urban glen
#

ganzen screen

sullen dome
#

aso

urban glen
#

das man es so sieht

lucid furnace
#

das hab ich doch auch gefragt??

sullen dome
#

sagt nxi wegen white scren

#

haha

urban glen
#

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

sullen dome
#

passt

urban glen
#

geht?

sullen dome
#

warte

#

ja jz kommt code fehlercode halt

urban glen
#

das ist jetzt ein fehler code xd

#

Du benutzt Visual Studio Code Right?

sullen dome
sullen dome
urban glen
#

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)

empty plaza
#

Wie kann ich überprüfen ob alle spalten eine ID haben?

viscid lake
wintry warren
#

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

viscid lake
#

"frage wenn ich ein code von einem anderen bot brauche kann ich das irgendwie importieren?" zu dem sage ich ja IMPOTIEREN

twin slate
#

Ich denke er hat das (so wie ich) verstanden dass du einen öffentlichen bot, oder zumindest einen nicht von dir meinst

twin slate
odd kiteBOT
twin slate
#

Dss hier

viscid lake
twin slate
#

Das weiß ich leider nicht aber das müsste in diesem video erklärt werden

viscid lake
#

ich glaube nicht

twin slate
#

Ja dann keine ahnung tut mir leid

#

Ist es keine option die funktion einfach in deinem neuen bot rein zu pasten?

viscid lake
#

und doch ist im video

tired hearth
#

Wie importiert man py-cord in VS Code?

twin slate
#

Im terminal pip install py-cord und in den files import discord

tired hearth
#

okay also genau so wie in PyCharm?

twin slate
#

Ja

tired hearth
#

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
 

twin slate
#

Keine ahnung wie man pip bei vscode macht

tired hearth
#

okay

wintry warren
ruby sparrow
#

warum zeig die commads nicht an

cloud cedar
#

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?

ruby sparrow
cloud cedar
ruby sparrow
#

ja bei cogs bracht man immer ein self

jade mantle
ruby sparrow
jade mantle
#

na ja eig stimmt alles so wie es aussieht

ruby sparrow
#

ja es wegen

hard pivot
#

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

limber crow
hard pivot
limber crow
# hard pivot 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

hard pivot
#

ah ok danke

limber crow
urban glen
#

und da gibts dann die funktion create_my_embed() oder so und returned das embed halt

#

das kannste dann von überall importieren

hard pivot
hard pivot
urban glen
#

ich hab da zum beispiel eine methode die ienen random string erstellt

#

oder guckt ob der user bestimmt rollen hat

#

sowas halt

hard pivot
#

also einfach nur kleine random funktionen die man über das programm verteilt mal braucht?

urban glen
#

wenn das einzeln ist kannsst du das dann halt easy überall benutzen

hard pivot
#

ah ok danke

urban glen
#

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

hard pivot
#

ah ich hatte sogar eine solche datei die hies nur bei mir import_file XD

ruby sparrow
#

Weiß jemand, wie man das mit Pre-Commit im vs-Code macht?

vivid sky
#

klartext bitte

lucid furnace
#

wie was genau funkt.

odd kiteBOT
#

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...

▶ Play video
ruby sparrow
#

so wie hier

ruby sparrow
#
await ctx.respond(embed=embed, ephemeral=True, view=modrole())```
lucid furnace
#

mehr code?

native inlet
ruby sparrow
#

ja morgen bin nicht an mein pc

ruby sparrow
#

Nein bot war on

tawdry leaf
urban glen
#

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?

tawdry leaf
urban glen
limber crow
ruby sparrow
#

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
thin silo
#

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.

ruby sparrow
#

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!

thin silo
#

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...

ruby sparrow
#
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

thin silo
#

Ich werde es sofort probieren, tausend Dank dir jetzt schon pog

ruby sparrow
#

geht es

#

@thin silo

thin silo
#

ich muss noch kurz meine arbeit verrichten ich melde mich in kürze

fierce dove
#

Weiß jemand wie die Discord Font heißt

native inlet
#

Musst nur einmal googlen und du findest es

fierce dove
native inlet
fierce dove
urban glen
limber crow
limber crow
limber crow
urban glen
urban glen
limber crow
#

Oder was glaubst du wie hat Timo mehrere Commands die gleich anfangen

limber crow
urban glen
native inlet
urban glen
native inlet
#

Is doch deine Frage?
Oder verstehe ich was falsch? xD

urban glen
#

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?

solid ingot
#

glaub das geht nicht

urban glen
#

Hat das evtl was damit zu tun?

thin silo
#

habe alles installiert inklusive ffmpeg was echt nicht leicht war

cloud cedar
#
    @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)

cursive lantern
#

Wie kann ich bei ezcord jetzt schon i18n verwenden also was muss in die requirements.txt

thin silo
#
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?

native helm
#

hey kann mir einer Helfen will ein Ticket system Mit mehreren Catergoryn machen

thin silo
#

wie viele brauche ich und wo?

ruby sparrow
#

du muss immer auch ein commad respond

solid ingot
solid ingot
strange juniper
cloud cedar
viscid lake
#

kann man mit einer webseite oder so die cpu vom server tracken? falls ja gerne ein link oder namen geben

limber crow
limber crow
tawdry leaf
#

so tracke ich die vom panel bzw vom discord bot

viscid lake
tawdry leaf
tawdry leaf
#

wie kann man des fixen

fierce dove
#

ka

tawdry leaf
#

was bist du denn für ein helfer angrycat

fierce dove
#

kann mann net fixen

tawdry leaf
#

dch muss

silk gulch
#

Ja @fierce dove ist ziemlich abgehoben ey. Böser Timo! Kappa

limber crow
cloud cedar
#

wie mache ich, dass der bot beim start alle nachrichten aus einem channel löscht?

limber crow
cloud cedar
#

hat geklappt :)
war sogar ziemlich intuitiv

cloud cedar
#

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)

limber crow
lofty rock
#
@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`
urban glen
#

Ganz einfach. In dem timeout command hast du kein ctx.respond🤷‍♂️

lofty rock
urban glen
lofty rock
urban glen
#

Timeout sowie timeout_for wollen datetime Objekte haben und keine Sekunden

cloud cedar
#
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

urban glen
#

Oder gehen andere cogs?

cloud cedar
ruby sparrow
#

@solid ingot soll man schon auf py-cord 2.5 gehen ?

ruby sparrow
jade mantle
ruby sparrow
#

ok danke

slow cosmos
#

Gibt es irgendwie die Möglichkeit, dass ein Slash Command nur in den guilds/Servern angezeigt wird die in einer bestimmten Datenbank stehen?

strange juniper
strange juniper
ruby sparrow
slow cosmos
strange juniper
#

Gerne

strange juniper
strange juniper
tawdry leaf
#

ist seitdem python 3.12 raus kam

ruby sparrow
#
@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```
native inlet
ruby sparrow
tawdry leaf
ruby sparrow
#

ja stimmt sry

slow cosmos
#
@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 😢
native inlet
slow cosmos
ruby sparrow
ruby sparrow
# tawdry leaf 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)```
cloud cedar
#

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()

tawdry leaf
ruby sparrow
#

ja

cloud cedar
fierce dove
#
@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()
tawdry leaf
cloud cedar
fierce dove
#

gehts

tawdry leaf
#

hm

fierce dove
#

lucky lost

tawdry leaf
ruby sparrow
tawdry leaf
ruby sparrow
#

aber tue es nicht

tawdry leaf
#

user nichts anderes habe ich geschrieben..

ruby sparrow
#

ust doch bei user

#

ist

tawdry leaf
#

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

slow cosmos
#

Wie kann man mit ezcord nochmal einen command anklickbar machen in einer nachricht?

tawdry leaf
ruby sparrow
slow cosmos
#

danke

ruby sparrow