#Allgemeine Hilfe

1 messages · Page 38 of 1

ruby sparrow
#
import discord
from discord.ext import commands
from discord.commands import slash_command
import asyncio
import random

class Giveaway(commands.Cog):
    def __init__(self, bot):
        self.bot = bot

    @slash_command(description="Giveaway System")
    @commands.has_permissions(administrator=True)
    async def start_giveaway(ctx, prize: str):
     giveaway_role = discord.utils.get(ctx.guild.roles, name=giveaway_role_name)
    if not giveaway_role:
        await ctx.send(f'Die Rolle "{giveaway_role_name}" wurde nicht gefunden.')
        return


       

        embed = discord.Embed(
            title='🎉 Giveaway',
            description=f'Preis: {prize}\nReagiere mit 🎉, um teilzunehmen!',
            color=discord.Color.blue()
        )
        embed.set_footer(text=f'Gestartet von {ctx.author.display_name}')
        message = await ctx.send(content=giveaway_role.mention, embed=embed)

        await message.add_reaction('🎉')

        await asyncio.sleep(giveaway_duration)

        message = await message.channel.fetch_message(message.id)
        reaction = discord.utils.get(message.reactions, emoji='🎉')
        users = await reaction.users().flatten()

        winner = random.choice(users)

        if winner == bot.user:
            # Falls der Bot der Gewinner ist, wird ein neuer Gewinner ausgewählt.
            users.remove(bot.user)
            winner = random.choice(users)

        if winner:
            embed = discord.Embed(
                title='🎉 Giveaway beendet',
                description=f'Preis: {prize}\nGewinner: {winner.mention}',
                color=discord.Color.green()
            )
            await ctx.send(embed=embed)
        else:
            await ctx.send('Niemand hat am Giveaway teilgenommen. Es gibt keinen Gewinner.')

        @start_giveaway.error
        async def start_giveaway_error(ctx, error):
            if isinstance(error, commands.MissingPermissions):
                await ctx.send('Du hast nicht die erforderlichen Berechtigungen, um dieses Giveaway zu starten.')

def setup(bot):
    bot.add_cog(Giveaway(bot))```
#
  File "C:\Users\Rysii\AppData\Local\Programs\Python\Python311\Lib\site-packages\discord\cog.py", line 774, in _load_from_module_spec
    spec.loader.exec_module(lib)  # type: ignore
    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "<frozen importlib._bootstrap_external>", line 936, in exec_module
  File "<frozen importlib._bootstrap_external>", line 1074, in get_code
  File "<frozen importlib._bootstrap_external>", line 1004, in source_to_code
  File "<frozen importlib._bootstrap>", line 241, in _call_with_frames_removed
  File "c:\Users\Rysii\OneDrive\Desktop\neu discord bot\cogs\Giveaway System.py", line 16
    await ctx.send(f'Die Rolle "{giveaway_role_name}" wurde nicht gefunden.')
    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
SyntaxError: 'await' outside function

The above exception was the direct cause of the following exception:

Traceback (most recent call last):
  File "c:\Users\Rysii\OneDrive\Desktop\neu discord bot\main.py", line 113, in <module>
    bot.load_cogs("cogs")
    ^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\Rysii\AppData\Local\Programs\Python\Python311\Lib\site-packages\ezcord\bot.py", line 152, in load_cogs
    self.load_extension(f"{'.'.join(path.parts)}.{name}")
  File "C:\Users\Rysii\AppData\Local\Programs\Python\Python311\Lib\site-packages\discord\cog.py", line 910, in load_extension
    self._load_from_module_spec(spec, name)
  File "C:\Users\Rysii\AppData\Local\Programs\Python\Python311\Lib\site-packages\discord\cog.py", line 777, in _load_from_module_spec
    raise errors.ExtensionFailed(key, e) from e
discord.errors.ExtensionFailed: Extension 'cogs.Giveaway System' raised an error: SyntaxError: 'await' outside function (Giveaway System.py, line 16)```
urban glen
#

falsch eingerückt

solid ingot
#

schick bitte den ganzen error

#

gern geschehen

molten abyss
#

NEIN

urban glen
#

Also mir gefallen seine Tutorials

molten abyss
urban glen
#

?

#

Hab nicht viel von ihm geschaut, aber das was ich gesehen habe, hat mir gefallen

next echo
#

Ich habe mir zwar Timos Video zu GitHub angeguckt aber er hatte nur gezeigt soweit ich weiß wie man ein Projekt erstellt auf GitHub und es bei PyCharm laden kann aber ich will ein Projekt was ich schon auf PyCharm habe auf GitHub hochaden.Das mit ignore und sachen reinschreiben hab ich auch gemacht bin mir aber nicht sicher ob es richtig ist und wie ich das überprüfen kann (Am besten wehre wenn jemand call könnte damit er es mir Live erklären kann und ich eine Übertragung machen kann)

#

Hab Post ja gelöscht

urban glen
#

Ah lol

#

Ja hab grad gesehen xD

#

Dann vergiss was ich gesagt habe hahaha

next echo
#

Ok xD

#

Benutz du GitHub?

urban glen
#

Eig nd so

next echo
#

Aber könntest trotzdem erklären wie GitHub funktioniert oder eher net?

#

Eher gesagt die Fragen oben beantworten

burnt prairieBOT
next echo
#

Lese doch erstmal denn Text Cat

ruby sparrow
#

Oh sry hab text da vor nicht gelesen);

next echo
#

Net schlimm :)

burnt prairieBOT
next echo
#

Danke

burnt prairieBOT
ruby sparrow
#

Weiss einer wie geht das?

urban glen
ruby sparrow
urban glen
urban glen
next echo
#

Würdet ihr sagen db sollte man bei git.ignore reinpacken?

#

Hallo?

#

Existiert noch wer?

dense magnet
#

Bzw sobald da irgendwas drin steht was von Usern kommt

next echo
#

K also zu sicherheit einfach ihn igno

twin slate
#

Ich bin dabei ein Anti Raid system zu coden und ich möchte jetzt abspeichern wann der audit log entry gemacht wurde. Ich habe das bis jetzt mit ner liste versucht. Wie genau kann ich das jetzt machen, weil wenn man nen datetime object mit list.append() einspeichert wird das soweit ich weiß zu nem string und nen string kann ich nicht minus nen datetime object rechnen um zu wissen wie lange der eintrag her ist. Hat jemand ne idee wie ich das machen kann?

torpid cloud
#

Oke

solid ingot
twin slate
urban glen
#

Primary Key falsch gesetzt

#

und das ist in deinem ticket_system

solid ingot
#

der code hat nichts mit dem error zu tun, aber du versuchst einen primary key in deine DB einzufügen, der schon existiert

#

wenn du das ignorieren magst, kannst du INSERT OR IGNORE verwenden

urban glen
#
    @commands.has_role(id)

Was wäre wenn ich noch @commands.has_permissions(administrator=True) schreiben würde? Könnten dann Leute mit der Rolle den cmd ausführen oder müsste beides zutreffen?

solid ingot
#

ich denke alle checks müssen erfolgreich sein, damit der user den befehl ausführen kann

urban glen
#

Ah okay!

solid ingot
ruby sparrow
#
[INFO   ] [deps        ] Successfully imported "kivy_deps.angle" 0.3.3
[INFO   ] [deps        ] Successfully imported "kivy_deps.glew" 0.3.1
[INFO   ] [deps        ] Successfully imported "kivy_deps.sdl2" 0.6.0
[INFO   ] [Kivy        ] v2.2.0
[INFO   ] [Kivy        ] Installed at "C:\Users\Rysii\AppData\Local\Programs\Python\Python311\Lib\site-packages\kivy\__init__.py"
[INFO   ] [Python      ] v3.11.2 (tags/v3.11.2:878ead1, Feb  7 2023, 16:38:35) [MSC v.1934 64 bit (AMD64)]
[INFO   ] [Python      ] Interpreter at "C:\Users\Rysii\AppData\Local\Programs\Python\Python311\python.exe"
[INFO   ] [Logger      ] Purge log fired. Processing...
[INFO   ] [Logger      ] Purge finished!
[INFO   ] [Factory     ] 190 symbols loaded
[INFO   ] [Image       ] Providers: img_tex, img_dds, img_sdl2, img_pil (img_ffpyplayer ignored)
[INFO   ] [Text        ] Provider: sdl2```
urban glen
#

Sieht schön aus

ruby sparrow
#

ich weis nicht warum die app start nicht [INFO ] [Logger ] Record log in C:\Users\Rysii\.kivy\logs\kivy_23-05-30_42.txt [INFO ] [deps ] Successfully imported "kivy_deps.angle" 0.3.3 [INFO ] [deps ] Successfully imported "kivy_deps.glew" 0.3.1 [INFO ] [deps ] Successfully imported "kivy_deps.sdl2" 0.6.0 [INFO ] [Kivy ] v2.2.0 [INFO ] [Kivy ] Installed at "C:\Users\Rysii\AppData\Local\Programs\Python\Python311\Lib\site-packages\kivy\__init__.py" [INFO ] [Python ] v3.11.2 (tags/v3.11.2:878ead1, Feb 7 2023, 16:38:35) [MSC v.1934 64 bit (AMD64)] [INFO ] [Python ] Interpreter at "C:\Users\Rysii\AppData\Local\Programs\Python\Python311\python.exe" [INFO ] [Logger ] Purge log fired. Processing... [INFO ] [Logger ] Purge finished! [INFO ] [Factory ] 190 symbols loaded [INFO ] [Image ] Providers: img_tex, img_dds, img_sdl2, img_pil (img_ffpyplayer ignored) [INFO ] [Text ] Provider: sdl2

#
from kivy.app import App
from kivy.uix.label import Label

class MyApp(App):
    def build(self):
        return Label(text='timo is er beste')

if __name__=='__main':
    MyApp().run()```
urban glen
#

__main__

ruby sparrow
#

ja stimme

#

oh fuck

urban glen
#

?

ruby sparrow
urban glen
#

Geht's?

ruby sparrow
#

😭

ruby sparrow
urban glen
#

Das beantwortet die frage nicht

ruby sparrow
urban glen
ruby sparrow
#

ich war einfach dumm

ruby sparrow
#
     super(BoxLayout, self).__init__(**kwargs)
   File "C:\Users\Rysii\AppData\Local\Programs\Python\Python311\Lib\site-packages\kivy\uix\layout.py", line 76, in __init__
     super(Layout, self).__init__(**kwargs)
   File "C:\Users\Rysii\AppData\Local\Programs\Python\Python311\Lib\site-packages\kivy\uix\widget.py", line 357, in __init__
     super(Widget, self).__init__(**kwargs)
   File "kivy\_event.pyx", line 238, in kivy._event.EventDispatcher.__init__
 TypeError: Properties ['orientaion'] passed to __init__ may not be existing property names. Valid properties are ['center', 'center_x', 'center_y', 'children', 'cls', 'disabled', 'height', 'ids', 'minimum_height', 'minimum_size', 'minimum_width', 'motion_filter', 'opacity', 'orientation', 'padding', 'parent', 'pos', 'pos_hint', 'right', 'size', 'size_hint', 'size_hint_max', 'size_hint_max_x', 'size_hint_max_y', 
'size_hint_min', 'size_hint_min_x', 'size_hint_min_y', 'size_hint_x', 'size_hint_y', 'spacing', 'top', 'width', 'x', 'y']
PS C:\Users\Rysii\OneDrive\Desktop\Kivy> ```
#
from kivy.app import App
from kivy.uix.boxlayout import BoxLayout
from kivy.uix.label import Label
from kivy.uix.button import Button

class MyApp(App):
    def build(self):
        layout = BoxLayout(orientaion='verlical')
        label1 = Label(text='Hello World')
        label2 = Label(text='ok')
        button = Button(text= 'start the app by ama')
        layout.add_widget(label1)
        layout.add_widget(label2)
        layout.add_widget(button)

        return layout

if __name__=='__main__':
    MyApp().run()```
restive herald
#

Du hast bei orientation ein t vergessen

restive herald
urban glen
#
layout = BoxLayout(orientation='vertical')
urban glen
# restive herald

Nicht nur bei orientation, er hat auch vertical falsch geschrieben

ruby sparrow
restive herald
urban glen
restive herald
#

Du musst das discord. Weglassen

#

Sozusagen:

emojiquiz = SlashCommandGroup(…)
urban glen
restive herald
#

from discord.commands Import SlashCommandGroup

#

Und dann:

@emojiquiz.command()
async def erstellen(self, ctx, channel: Option(discord.Channel)):
    #usw

Als Idee. Musst dann noch options Importen

#

Und bin ja dafür wenn du schon nen Ordner cogs hast auch cogs nutzt…

#

Musst Option schreiben… hab mich verschrieben, deshalb nd genau abschreiben xD

#

from discord.commands

#

Schick einfach mal den Code der Datei und wie du cogs in Main Datei lädst

#

Richtig

#

Jetzt die emojiquiz Datei

restive herald
#

Den Code von der emojiquiz Datei, wie du Class machst und setupst.

ruby sparrow
#

hat einer gute bgcolor?

upper adder
#

Mal eine dumme Frage, aber wenn ein user einen Slash command benutzt, ist die antwort darauf eine Bot-nachricht oder eine User-nachricht?
Mir gehts um sowas hier:

urban glen
#

Wie meinst du??

upper adder
#

Wenn ich das hier mache:

burnt prairieBOT
#
Kuscheln

@upper adder kuschelt mit @past temple!

upper adder
#

Ist zählt das als nachricht von mir, oder als eine vom Bot?

urban glen
#

Ich vermute Bot

#

Aber man kann in nem on_message auch checken wer den cmd ausgeführt hat

torpid gorge
#

Kann ich das so vergleichen?: if self.value == 1: feedback_embed.add_field(name="Sterne-Bewertung:", value="⭐ 1 Stern", inline=False) elif self.value == 2: feedback_embed.add_field(name="Sterne-Bewertung:", value="✨ 2 Sterne", inline=False) elif self.value == 3: feedback_embed.add_field(name="Sterne-Bewertung:", value="🌟 3 Sterne", inline=False) elif self.value == 4: feedback_embed.add_field(name="Sterne-Bewertung:", value="🥇 4 Sterne", inline=False) elif self.value == 5: feedback_embed.add_field(name="Sterne-Bewertung:", value="🏆 5 Sterne", inline=False)

#

Denn irgendwie geht es net und ich bin gerade zu hirntot, um eine Lösung zu finden

urban glen
#

Is das in nem Dropdown?

torpid gorge
urban glen
#
        if self.values[0] == 1:
            feedback_embed.add_field(name="Sterne-Bewertung:", value="⭐ 1 Stern", inline=False)
        elif self.values[0]== 2:
            feedback_embed.add_field(name="Sterne-Bewertung:", value="✨ 2 Sterne", inline=False)
        elif self.values[0]== 3:
            feedback_embed.add_field(name="Sterne-Bewertung:", value="🌟 3 Sterne", inline=False)
        elif self.values[0]== 4: 
            feedback_embed.add_field(name="Sterne-Bewertung:", value="🥇 4 Sterne", inline=False)
        elif self.values[0]== 5:
            feedback_embed.add_field(name="Sterne-Bewertung:", value="🏆 5 Sterne", inline=False)
#

Probiers so

torpid gorge
urban glen
torpid gorge
#

self.value = value ist von einer anderen Klasse übergeben, deshalb geht es so net

urban glen
#

Zeig mal mehr code

urban glen
# urban glen ```py if self.values[0] == 1: feedback_embed.add_field(name=...

Oder wenn du es moderner willst:

        match self.values[0]:
            case 1:
                feedback_embed.add_field(name="Sterne-Bewertung:", value="⭐ 1 Stern", inline=False)
            case 2:
                feedback_embed.add_field(name="Sterne-Bewertung:", value="✨ 2 Sterne", inline=False)
            case 3:
                feedback_embed.add_field(name="Sterne-Bewertung:", value="🌟 3 Sterne", inline=False)
            case 4: 
                feedback_embed.add_field(name="Sterne-Bewertung:", value="🥇 4 Sterne", inline=False)
            case 5:
                feedback_embed.add_field(name="Sterne-Bewertung:", value="🏆 5 Sterne", inline=False)
#

Müsste so auch gehen xD

torpid gorge
#

ich probiers mal so

urban glen
torpid gorge
# urban glen Zeig doch mal, wo / wie du es übergibst
    async def callback(self,select, interaction: discord.Interaction):
        print(f"{select.values[0]}")
        modal = TutorialModal(title="Feedback", value=f"{select.values[0]}")
        await interaction.response.send_modal(modal)
        

class FeedbackModal(discord.ui.Modal):
    def __init__(self,value, *args, **kwargs):```
#

und das value beim feedback Modal will ich jetzt mit 1,2,3,4 und 5 vergleichen

urban glen
torpid gorge
urban glen
# torpid gorge ja was muss ich anders machen?
        match self.value:
            case "1":
                feedback_embed.add_field(name="Sterne-Bewertung:", value="⭐ 1 Stern", inline=False)
            case "2":
                feedback_embed.add_field(name="Sterne-Bewertung:", value="✨ 2 Sterne", inline=False)
            case "3":
                feedback_embed.add_field(name="Sterne-Bewertung:", value="🌟 3 Sterne", inline=False)
            case "4": 
                feedback_embed.add_field(name="Sterne-Bewertung:", value="🥇 4 Sterne", inline=False)
            case "5":
                feedback_embed.add_field(name="Sterne-Bewertung:", value="🏆 5 Sterne", inline=False)
#

Versuchs so, also nicht als Integer, sondern als String, weil du es auch als String übergibst

torpid gorge
#

ok

#

geht vielen Dank

urban glen
tawdry leaf
# molten abyss NEIN

Meinungsfreiheit wenn man bisschen Ahnung hat weiß man damit was anzufangen meiner Meinung nach

urban glen
graceful fiber
#

Wieso ohne discord.ui.View, wäre das nicht einfacher?

solid ingot
urban glen
#

ich habe ein fehlercode weil der cog nicht geht aber eigendlich funktioniert er

fehlercode:
Ignoring exception in on_connect
Traceback (most recent call last):
File "C:\Users\melvi\Desktop\bot\venv\lib\site-packages\discord\client.py", line 378, in _run_event
await coro(*args, **kwargs)
File "C:\Users\melvi\Desktop\bot\venv\lib\site-packages\discord\bot.py", line 1164, in on_connect
await self.sync_commands()
File "C:\Users\melvi\Desktop\bot\venv\lib\site-packages\discord\bot.py", line 719, in sync_commands
registered_commands = await self.register_commands(
File "C:\Users\melvi\Desktop\bot\venv\lib\site-packages\discord\bot.py", line 599, in register_commands
registered = await register("bulk", data, _log=False)
File "C:\Users\melvi\Desktop\bot\venv\lib\site-packages\discord\http.py", line 371, in request
raise HTTPException(response, data)
discord.errors.HTTPException: 400 Bad Request (error code: 30034): Max number of daily application command creates has been reached (200)
[INFO] Bot is online with EzCord 0.2.1

umbral goblet
ruby sparrow
solid ingot
restive herald
#

Weiß zufällig jemand, wie ich checken kann, ob der Command in einer Guild ausgeführt wurde?

solid ingot
#

if ctx.guild:

restive herald
#

Danke Timo 🙂

urban glen
#

Ich bin zwar nicht Timo, aber bitte Kiss

restive herald
next echo
#
Ignoring exception in on_connect
Traceback (most recent call last):
  File "C:\Users\CDI\PycharmProjects\discord_bot\venv\lib\site-packages\discord\client.py", line 378, in _run_event
    await coro(*args, **kwargs)
  File "C:\Users\CDI\PycharmProjects\discord_bot\venv\lib\site-packages\discord\bot.py", line 1164, in on_connect
    await self.sync_commands()
  File "C:\Users\CDI\PycharmProjects\discord_bot\venv\lib\site-packages\discord\bot.py", line 738, in sync_commands
    app_cmds = await self.register_commands(
  File "C:\Users\CDI\PycharmProjects\discord_bot\venv\lib\site-packages\discord\bot.py", line 599, in register_commands
    registered = await register("bulk", data, _log=False)
  File "C:\Users\CDI\PycharmProjects\discord_bot\venv\lib\site-packages\discord\http.py", line 371, in request
    raise HTTPException(response, data)
discord.errors.HTTPException: 400 Bad Request (error code: 30034): Max number of daily application command creates has been reached (200)

Das Problem kann ich doch lösen indem ich Command Groups mache oder net?

solid ingot
#

das Problem kannst du nicht lösen, du musst entweder warten oder einen anderen bot nutzen

next echo
#

Wie meinst was genau ist den überhaupt die Bedeutung des Errors?

#

Timo

solid ingot
#

ganz einfach gesagt hast du deinen bot in den letzten 24h zu viel getestet. jetzt musst du warten oder mit einem anderen bot weiter testen

next echo
#

K also halt Token ändern?

burnt prairieBOT
#
Level Up!

Herzlichen Glückwunsch @next echo, du bist jetzt Level 9 🎉

Du hast insgesamt 300 Nachrichten geschrieben.

solid ingot
next echo
#

Meine ich ja

next echo
#

Hab mal gegoogelt angeblich heißt es das der Text zu lang ist

solid ingot
#

das stimmt nicht

next echo
#
raise HTTPException(response, data)
discord.errors.HTTPException: 400 Bad Request (error code: 50035): Invalid Form Body
In 2: Application command names must be unique

Was das jetzt?

#

Und was kann ich dagegen machen

limpid wolf
next echo
#

Aber ka wo

umbral goblet
restive herald
next echo
#

Immer wenn ich mein Bot starte kommt das:

raise HTTPException(response, data)
discord.errors.HTTPException: 400 Bad Request (error code: 30034): Max number of daily application command creates has been reached (200)

Wenn ich dann eine File lösche funktioniert es wieder alles aber gestern hatte ich von so welchen Files doppelt so viel und da hatte noch alles funktioniert

restive herald
#

Du hast zu viele Commands an einem Tag erstellt, steht doch da

urban glen
#

Error lesen error

next echo
#

Was soll ich jetzt machen darf ich pro tag nur 1 command erstellen oder was?

#

Hää

next echo
#

Also darf ich mörgen die Commands nochmal neu senden und dan funktioniert es?

urban glen
#

Oder du machst jetzt einen neuen Bot

#

Und testest da neue Commands

next echo
#

Hab ich war trotzdem

#

Ne muss ja net mehr testen die Commands funktionieren ja

#

Warum gibt es sowas xD

urban glen
digital crypt
#

PS C:\Users\EliasFYHP\OneDrive\Desktop\Discord Bot> & C:/Users/EliasFYHP/AppData/Local/Programs/Python/Python310/python.exe "c:/Users/EliasFYHP/OneDrive/Desktop/Discord Bot/main.py"
Traceback (most recent call last):
File "c:\Users\EliasFYHP\OneDrive\Desktop\Discord Bot\main.py", line 4, in <module>
from discord.ext import commands
ImportError: cannot import name 'commands' from 'discord.ext' (unknown location)
PS C:\Users\EliasFYHP\OneDrive\Desktop\Discord Bot>

restive herald
#

Ig Installationsfehler, mach mal pip show py-cord

Oder deinstalliere py-cord und installiere es nochmal neu

digital crypt
#

thy

restive herald
#

Falls du noch librarys wie d.py, d4py oder nextcord hast die am besten auch noch deinstallieren

digital crypt
#

geht danke

restive herald
#

Perfekt 🙂

ruby sparrow
#

wie schreibt man eigene Pycord-Erweiterung?

solid ingot
#

du könntest aber auch bei pycord direkt eine pull request machen

lusty palm
#

was ist der unterschied zwischen async with db und await db?

burnt prairieBOT
#
Level Up!

Herzlichen Glückwunsch @lusty palm, du bist jetzt Level 6 🎉

Du hast insgesamt 173 Nachrichten geschrieben.

lusty palm
#

bezogen auf execute

restive herald
#

Bei async with zeigst du Daten raus, bei await trägst du was ein/änderst etwas. Also das macht aktiv was mit der DB

#

Würde ich spontan so sagen

lusty palm
#

ah ja stimmt danke^^

ruby sparrow
#
import discord 
from discord.ext import commands
from discord.commands import slash_command


class member(commands.Cog):
    def __init__(self,bot):
        self.bot = bot

    @slash_command(description= "zeig dir alle members an !")
    async def member(self, ctx):
        member_count =len(ctx.guild.members)
        await ctx.respond(f"Der Server hat {member_count} Mitglieder")
        await ctx.respond(embed=embed)


def setup(bot):
    bot.add_cog(member(bot))```
#

warum zeig er commad nicht an?

mental hamlet
solid ingot
ruby sparrow
#

😭

#
import requests

def get_weather(api_key, city):
    base_url = "http://api.openweathermap.org/data/2.5/weather"
    params = {
        "q": city,
        "appid": api_key,
        "units": "metric"
    }
    response = requests.get(base_url, params=params)
    weather_data = response.json()
    return weather_data

def display_weather(weather_data):
    if weather_data["cod"] != "404":
        temperature = weather_data["main"]["temp"]
        description = weather_data["weather"][0]["description"]
        print(f"Aktuelle Temperatur: {temperature}°C")
        print(f"Wetterbeschreibung: {description}")
    else:
        print("Wetterinformationen nicht verfügbar.")

def main():
    api_key = "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"  
    city = input("Geben Sie den Namen der Stadt ein: ")
    weather_data = get_weather(api_key, city)
    display_weather(weather_data)

if __name__ == "__main__":
    main()```
#
  File "c:\Users\Rysii\OneDrive\Desktop\wetter app by ama\app.py", line 30, in <module>       
    main()
  File "c:\Users\Rysii\OneDrive\Desktop\wetter app by ama\app.py", line 27, in main
    display_weather(weather_data)
  File "c:\Users\Rysii\OneDrive\Desktop\wetter app by ama\app.py", line 16, in display_weather
    temperature = weather_data["main"]["temp"]
                  ~~~~~~~~~~~~^^^^^^^^
KeyError: 'main'```
solid ingot
#

Main kommt nicht in weather_data vor

#

lass dir das Mal Printen um zu schauen was alles drin vorkommt

jovial yew
#

weiss einer wie discord die rechte überschreibt? also ein member hat eine rolle diese rolle darf einen kanal sehen jetzt gebe ich dem member aber mit der rolle in den kanal settings das verbot den kanal zu sehen also rot? was überschreibt da welches recht die rolle den member oder der member die rolle?

solid ingot
#

member sollte rolle überschreiben denke ich

#

aber probiers einfach mal aus

upper adder
#

Kann man den Code der die Transcripts beim @burnt prairie erstellt irgendwo finden? 👀

urban glen
#

Diese library nutzt Timo dafür

#

Das kannst du auch sehen, wenn du bei nem Transcript die Website untersuchst

solid ingot
upper adder
#

Hmmm... Nutze discord4py - is des damit kompatibel?

upper adder
#

Okay, weißt du, ob das auch für ForumPosts funktioniert?

solid ingot
urban glen
#

Kannst ja zur not nach dem Installieren von chat-exporter dann den code davon bearbeiten und halt discord4py hinzufügen

upper adder
#

Joop👍

#

Tutorials wie chat-exporter geht finde ich online oder?👀

solid ingot
#

du findest beispiele in der dokumentation ja

urban glen
upper adder
#

Aaah!! Super!

urban glen
#

Hallo!

#

Hallo!

#

custom_logs gibt es wohl nicht als argument

#

Wie dann

#

Was wie dann?

#

Ach egal

ruby sparrow
urban glen
#

Okay

#
    @slash_command(description="Nichts.")
    async def nichts(self, ctx):
        desc = ""
        counter = 1
        async with aiosqlite.connect(self.DB) as db:
            async with db.execute("SELECT user_id, credits_count, msg FROM credits WHERE msg > 0 ORDER BY credits_count DESC LIMIT 10") as cursur:
                async for user_id, credits, msg in cursur:
                
                desc += f"{counter}. <@{user_id}> - *{credits} Credits* \n"
                counter += 1

        embed = discord.Embed(title="Nichts", description=f"*› Nichts!*\n\n{desc}", color=0x545af2)
       
        await ctx.respond(embed=embed)      
#

Wo ist da die Einrückung falsch?

ruby sparrow
#

es await ctx.respond ist nicht in class

urban glen
urban glen
ruby sparrow
urban glen
#

Es ist in dem nichts command

ruby sparrow
#

@urban glen wo ist er eigentlich er error ?

ruby sparrow
urban glen
solid ingot
# urban glen

sorry dafür, ich habe gerade ein neues update herausgebracht und den custom_logs parameter entfernt

#

die alten parameter waren etwas schwer zu verstehen fand ich

upper adder
#

Mal noch ne Frage,
braucht mein Bot diese Gateway Intents um Kanäle & Kategorien zu erstellen?

#

Weil hab das in den Docs gelesen, blick da aber nicht durch.

solid ingot
#

dafür benötigst du keine der intents, die du im developer portal aktivieren musst, das sollte einfach so klappen

upper adder
#

Ah okay, denkst du es gibt irgendwelche Komplikationen bzgl. ModMail-Bot?
Z.B. Mutual Server?

solid ingot
#

da brauchst du evtl den server member intent

urban glen
#

message_content intents auch, weil ein Modmail is ja eig so aufgebaut, dass der supporter per channel schreibt und der, der support braucht halt per dm

Ich vermute das du es auch so hast, deshalb maybe auch message_content

upper adder
#

Die sind ja Standardmäßig aktiviert im Developer Portal

urban glen
#

ne, standardmäßig sind sie aus

restive herald
#

Bin gerade brain afk, kann man bei Commands Debug_Guilds machen und wenn ja wie? .-.

solid ingot
#

ja, mit guilds_ids=[123]

restive herald
#

Ah, stimmt danke

ruby sparrow
#

Traceback (most recent call last):
  File "c:\Users\Rysii\OneDrive\Desktop\test bot\ama.py", line 12, in <module>
    bot.load_cogs("cogs")  # Load all cogs in the "cogs" folder
    ^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\Rysii\AppData\Local\Programs\Python\Python311\Lib\site-packages\ezcord\bot.py", line 152, in load_cogs
    self.load_extension(f"{'.'.join(path.parts)}.{name}")
  File "C:\Users\Rysii\AppData\Local\Programs\Python\Python311\Lib\site-packages\discord\cog.py", line 910, in load_extension
    self._load_from_module_spec(spec, name)
  File "C:\Users\Rysii\AppData\Local\Programs\Python\Python311\Lib\site-packages\discord\cog.py", line 791, in _load_from_module_spec
    raise errors.ExtensionFailed(key, e) from e
discord.errors.ExtensionFailed: Extension 'cogs.Giveaway' raised an error: AttributeError: 'Bot' object has no attribute 'add_command'```
#

das ist auf test bot

solid ingot
#

bitte nicht immer den ganzen code schicken

#

nutzt du prefix commands?

ruby sparrow
urban glen
# ruby sparrow

Du nutzt Prefix commands, also musst du in deiner Main File stattb discord.Bot dann commands.Bot machen

#

bot = commands.Bot(command_prefix="!", intents=discord.Intents.all())

solid ingot
#

bei ezcord müsstest du statt ezcord.Bot dann ezcord.PrefixBot nutzen wenn du prefix commands nutzt

urban glen
ruby sparrow
#

ich mache mit ezcord @urban glen

urban glen
#

Okay @ruby sparrow

shy forum
#

Wie erstellt man einen Button in einer selben class?

solid ingot
#

was meinst du genau für eine class? du kannst entweder direkt eine button klasse erstellen, oder eine view klasse

#

im button video sind beide möglichkeiten erklärt

shy forum
#

Okay danke

shy forum
#

Wird das da auch erklärt?

solid ingot
#

lass das lieber

#

ich würde immer eine extra klasse erstellen

shy forum
#

Oder wenn man sich ein Upgrade für Cookies kauft

shy forum
solid ingot
#

das kannst du auch mit so einer klasse machen

shy forum
#

ok thx

burnt prairieBOT
#

Mein Discord Server
https://discord.gg/zfvbjTEzv6

▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬
Mein Hosting* ► https://tidd.ly/3gJufg6
Code auf Github ► https://github.com/tibue99/tutorial-bot

PYCORD
Docs ► https://docs.pycord.dev/
Guide ► https://guide.pycord.dev/introduction/
Discord Server ► https://discord.gg/pycord

Discord Developer Portal ► https://discord...

▶ Play video
crude heath
#

Mit ctx.send_modal respondest du auch. Also musst du entweder das embed so senden oder dir was anderes überlegen.

crude heath
#

Was hast geändert?

#

Das mit embed oder Modal

#

Schreib mal return await ctx.respond

#

Schick mal den ganzen Error

#

Oder nen Bild von dem

wise stone
#

mach doch message.edit? (wenn's per Slash command ist dann die Pins angucken wie die msg geholt wird)

wise stone
burnt prairieBOT
#
Level Up!

Herzlichen Glückwunsch @mystic flower, du bist jetzt Level 13 🎉

Du hast insgesamt 1,061 Nachrichten geschrieben.

tall gorge
#

await ctx.defer() zählt auch schon als geantwortet

burnt prairieBOT
#
Level Up!

Herzlichen Glückwunsch @tall gorge, du bist jetzt Level 8 🎉

Du hast insgesamt 258 Nachrichten geschrieben.

mental hamlet
#

PepeS => Followup

urban glen
#

Ist es irgendwie möglich egal welchen Command man ausführt das der Bot im Wartungsmodus ist?

#

Also das dann ein Error kommt

solid ingot
#

ja, das geht entweder mit einem globalen check oder mit @before_invoke

burnt prairieBOT
#

Mein Discord Server
https://discord.gg/zfvbjTEzv6

▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬
Mein Hosting* ► https://tidd.ly/3gJufg6
Code auf Github ► https://github.com/tibue99/tutorial-bot

PYCORD
Docs ► https://docs.pycord.dev/
Guide ► https://guide.pycord.dev/introduction/
Discord Server ► https://discord.gg/pycord

Discord Developer Portal ► https://discord...

▶ Play video
solid ingot
#

das ist nun möglich :)

mental hamlet
burnt prairieBOT
#

Mein Discord Server
https://discord.gg/zfvbjTEzv6

▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬
Mein Hosting* ► https://tidd.ly/3gJufg6
Code auf Github ► https://github.com/tibue99/tutorial-bot

PYCORD
Docs ► https://docs.pycord.dev/
Guide ► https://guide.pycord.dev/introduction/
Discord Server ► https://discord.gg/pycord

Discord Developer Portal ► https://discord...

▶ Play video
solid ingot
#

du kannst jetzt den ezcord error handler deaktivieren und trotzdem den error webhook nutzen. hab ich extra für dich eingebaut peepolove

digital crypt
#

verstehe denn error nicht

#

Space Bot#1420 is ready
Ignoring exception in on_ready
Traceback (most recent call last):
File "C:\Users\EliasFYHP\AppData\Local\Programs\Python\Python310\lib\site-packages\discord\client.py", line 378, in _run_event
await coro(*args, **kwargs)
File "c:\Users\EliasFYHP\OneDrive\Desktop\Discord Bot\main.py", line 43, in on_ready
if msg.content.startswith("?play"):
NameError: name 'msg' is not defined

urban glen
#

Er hat es im on_ready ..

novel ore
ruby sparrow
#

@digital crypt immer codeerror

digital crypt
#

[youtube] h3h035Eyz5A: Downloading webpage
ERROR: Unable to extract uploader id; please report this issue on https://yt-dl.org/bug . Make sure you are using the latest version; see https://yt-dl.org/update on how to update. Be sure to call youtube-dl with the --verbose flag and include its complete output.
ERROR: Unable to extract uploader id; please report this issue on https://yt-dl.org/bug . Make sure you are using the latest version; see https://yt-dl.org/update on how to update. Be sure to call youtube-dl with the --verbose flag and include its complete output.

GitHub

Command-line program to download videos from YouTube.com and other video sites - Issues · ytdl-org/youtube-dl

GitHub

Command-line program to download videos from YouTube.com and other video sites - youtube-dl/README.md at master · ytdl-org/youtube-dl

surreal patrol
#

und nicht von github

restive herald
#

Wie kann man mit ezcord prefix commands machen, und kann ich da trotzdem /slash commands nutzen?

solid ingot
#

ja, da müsstest du ezcord.PrefixBot nutzen

#

funktioniert wie commands.Bot

restive herald
#

Aber Slash Commands gehen

solid ingot
#

genau

restive herald
#

okay, danke

#

und wie macht man dann slash commands? haste da nen video oder beispielcode?

urban glen
restive herald
#

hab ka wie man die da gemacht hat...

solid ingot
#

genauso wie normale slash commands bei pycord

restive herald
#

oh bin dumm, meine prefix commands

solid ingot
#

die machst du auch genau so wie bei pycord :D

restive herald
#

Ja hab die nd benutzt xd

solid ingot
#

also zu prefix commands habe dazu kein tutorial gemacht, da prefix commands outdated sind. wenn du welche machen möchtest schau dir mal die beispiele im pycord github oder andere youtube videos an

restive herald
#

ok

snow hatch
#

wie findet man heraus auf welchen server ein bot ist

urban glen
#
for guild in bot.guilds:
  print(guild.name)
  print(guild.owner)
snow hatch
#

nah meine aeinfach so

urban glen
#

??

snow hatch
#

weil mir angezigt wird beim starten von ezcord er ist auf 2 servern

#

aber weiß nicht welcher der zweite ist, kann man das im developer portal oder so sehen

urban glen
snow hatch
#

bei owner wird none angezeigtpeepobruh

restive herald
#

code?

snow hatch
#

und ich will wissen wem der kack test bot server gehört

#
@bot.event
async def on_ready():
    for guild in bot.guilds:
        print(guild.name)
        print(guild.owner)
tawdry leaf
#

nice

urban glen
#

Wird das geprintet?

#

Wenn du nicht willst, dass man deinen Bot einlädt, wieso machst du es dann nicht aus?
Im dev portal

tawdry leaf
snow hatch
tawdry leaf
#

intents.members = True

hast du des

urban glen
tawdry leaf
#

ok

snow hatch
#

weiß einer woran es liegen kann wenn der bot bei einem klappt aber auf dem server nicht mehr, requirments sind drinne(bei keks hosting)
Habe diesen fehler der aber nicht wenn ich ihn starte komme(bei mir halt starten)

RuntimeError: PyNaCl library needed in order to use voice
snow hatch
#

also auf dem hosting server

restive herald
#

Hast du in der requirements.txt rlly PyNaCl stehen?

tawdry leaf
snow hatch
#

ja

tawdry leaf
#

du brauchst es nd in requirements

restive herald
#

Rlly? Dachte nur ffmpeg

tawdry leaf
restive herald
#

bei mir musste ichs in die req.txt packen

tawdry leaf
#

hm achso

urban glen
#

Hey ich habe ein Economysystem erstellt nur jetzt hab ich das Problem das ich bei allen Servern das Geld habe wenn ich auf einem /work mache.
Ich würde das gerne trennen nur habe keine Ahnung wie ich den check einbauen sollte auf welchem Server das passiert ist hier der Code:

Einfach erklärt: Auf jedem Server eigenes Economy System

    @commands.Cog.listener()
    async def on_ready(self):
        async with aiosqlite.connect(self.DB) as db:
            await db.execute(
                """
                CREATE TABLE IF NOT EXISTS economy (
                user_id INTEGER PRIMARY KEY,
                guild_id INTEGER,
                bank INTEGER DEFAULT 0,
                cash INTEGER DEFAULT 0
                )"""
            )

    async def check_user(self, user_id):
        async with aiosqlite.connect(self.DB) as db:
            await db.execute("INSERT OR IGNORE INTO economy (user_id) VALUES (?)", (user_id,))
            await db.commit()

    async def get_cash(self, user_id):
        await self.check_user(user_id)
        async with aiosqlite.connect(self.DB) as db:
            async with db.execute("SELECT cash FROM economy WHERE user_id = ?", (user_id,)) as cursor:
                result = await cursor.fetchone()

        return result[0]

    @slash_command(description='Arbeite ein bisschen, um Geld zu verdienen.')
    @commands.cooldown(1, 3600, commands.BucketType.user)
    @commands.guild_only()
    async def work(self, ctx):

        Chance = random.randint(1, 100)
        if Chance > 25:
            coins = random.randint(20, 80)

            eventP = random.choice(events.workP(coins))

            em = discord.Embed(
                description=f'{eventP}',
                color=discord.Color.green(),
                timestamp=datetime.now()
            )
            em.set_author(name=f"{ctx.author.name}", icon_url=f'{ctx.author.display_avatar}')

            async with aiosqlite.connect(self.DB) as db:
                async with db.execute("UPDATE economy SET cash = cash + ? WHERE user_id = ?",
                                      (coins, ctx.author.id)) as cursor:
                    await db.commit()

            await ctx.respond(embed=em)


        else:
            coinsN = random.randint(10, 50)

            eventN = random.choice(events.workN(coinsN))

            em2 = discord.Embed(
                description=f'{eventN}',
                color=discord.Color.red(),
                timestamp=datetime.now()
            )
            em2.set_author(name=f"{ctx.author.name}", icon_url=f'{ctx.author.display_avatar}')

            async with aiosqlite.connect(self.DB) as db:
                async with db.execute("UPDATE economy SET cash = cash - ? WHERE user_id = ?",
                                      (coinsN, ctx.author.id)) as cursor:
                    await db.commit()

            await ctx.respond(embed=em2)
restive herald
urban glen
#

Wie zusammengesetzt?
Hättest du davon ein Beispiel damit ich es vlt verstehe?

solid ingot
#

also aktuell speicherst du ja die user ID in der datenbank. jetzt musst du zusätzlich noch die server ID speichern

tawdry leaf
#

wäre auch eine Option

restive herald
# urban glen Wie zusammengesetzt? Hättest du davon ein Beispiel damit ich es vlt verstehe?
@commands.Cog.listener()
async def on_ready(self)
    async with aiosqlite.connect(self.db) as db:
        await db.execute("""
            CREATE TABLE IF NOT EXISTS warns(
            id INT,
            warns)""")
        await db.commit()

@commands.Cog.listener()
async def on_member_join(self,member)
    id = int(member.id)+int(member.guild.id)
    async with aiosqlite.connect(self.db) as db:
        await db.execute("INSERT INTO warns (id,warns) VALUES (?,0)",(id,))
        await db.commit()




@slash_command()
async def warn(self, ctx, user: Option(discord.Member, required=True))
    id = int(ctx.guild.id)+int(user.id)
    async with aiosqlite.connect(self.db) as db:
        await db.execute("UPDATE warns SET warns = warns + 1 WHERE id = (?)", (id,))
    await ctx.respond(f"{user} wurde gewarnt!")
        async with db.execute("SELECT warns FROM warns WHERE id = (?)", (id,)) as cursor:
        az = await cursor.fetchone()
        az = az[0]
    if az => 5:
       await ctx.guild.ban(user)
       await ctx.channel.send(f"{user} wurde gebannt, da er 5 Warns hat!")

Hab ich mir mal kurz ausm Arm geschüttelt, habs jtzt nd getestet. Aber so siehts ungefähr aus

urban glen
#

Aber trotzdem Danke

snow hatch
#

wie gette ich eine kategorie

tawdry leaf
#

wie einen channel

snow hatch
#

ok

urban glen
hard pivot
#

Hallo ich mache gerade ein Blacklist manager und wollte fragen kann ich einschrenken welche channel in einen channel select menü angezeigt werden sollen?

solid ingot
next echo
#

Kennt wer ne seite oder so wo man free hosting kriegt aber wo man net so begrenzt ist?

tall gorge
#

Code: ```py
@discord.ui.button(label="\u200b", style=discord.ButtonStyle.green, emoji="🍪", custom_id="Cookie", row=1)
async def button_callback1(self, button, interaction):

    async with aiosqlite.connect(self.db) as db:
        async with db.execute("SELECT level FROM cookie WHERE user_id = ?", (self.user.id,)) as cursor:
            level = await cursor.fetchone()

    if level == 1:

        coins = 2

        cookies = await self.get_cookies(self.user.id)
        cookieG = cookies + coins
        async with aiosqlite.connect(self.db) as db:
            async with db.execute("UPDATE cookie SET cookies = cookies + ? WHERE user_id = ?",
                                  (coins, self.user_id)) as cursor:
#
await db.commit()

            em2 = discord.Embed(description=f"Du hast **{coins}**🍪 erhalten", color=discord.Color.green(),
                                timestamp=datetime.now()
                                )
            em2.add_field(
                name='Cookies:',
                value=f'{cookieG}🍪'
            )

            if self.user.avatar:
                em2.set_author(name=f"{self.user.name}", icon_url=f'{self.user.avatar}')

            else:
                em2.set_author(name=f"{self.user.name}")
            await interaction.response.send_message(embed=em2, ephemeral=True)




        elif level == 0:

            coins = 1

            cookies = await self.get_cookies(self.user.id)
            cookieG = cookies + coins
            async with aiosqlite.connect(self.db) as db:
                async with db.execute("UPDATE cookie SET cookies = cookies + ? WHERE user_id = ?",
                                      (coins, self.user_id)) as cursor:
                    await db.commit()

            em2 = discord.Embed(description=f"Du hast **{coins}**🍪 erhalten", color=discord.Color.green(),
                                timestamp=datetime.now()
                                )
            em2.add_field(
                name='Cookies:',
                value=f'{cookieG}🍪'
            )

            if self.user.avatar:
                em2.set_author(name=f"{self.user.name}", icon_url=f'{self.user.avatar}')

            else:
                em2.set_author(name=f"{self.user.name}")
            await interaction.response.send_message(embed=em2, ephemeral=True)


        else:
            emErr2= discord.Embed(title="❌ | Fehler", description="`❌` | Es ist ein unbekannter Fehler aufgetreten")
            await interaction.response.send_message(embed=emErr2, ephemeral=True)```
#

Da kommt kein error aber obwohl ich level 1 bin kommt dann nur das else dass ich zur kontrole programmiert habe

solid ingot
#

mach mal print(level), das ist wahrscheinlich noch ein tupel

#

wie du das löst zeige ich bei meiner datenbankserie in folge 2 bei 0:28

tall gorge
#

tubel? was ist das?

solid ingot
#

hier wirds gezeigt

#

ähnlich wie eine liste

tall gorge
#

mhm, das wird geprintet: (1,)

#

thx hat geklappt

#

kann man es eig irgendwie machen wenn ein user nicht auf den button klickt, dass er z.b. alle 60 sec 1 Keks bekommt, da ich einen cookie clicker mache

restive herald
#

Mit ner task sicher

tall gorge
restive herald
#

Hätte jetzt iwie gesagt, wenn er klickt, wird in die DB nen wert auf 1 (für geklickt) gesetzt. Dann hast du 1x ne Task die alle 60sek diese variable auf 0 setzt (für nicht geklickt)
Und eine die z.b. alle 60 oder 30s checkt, ob der Wert auf 0 ist, wenn er 0 ist dann wird nen Keks geaddet

tall gorge
#

klingt nicht schlecht, muss ich dann morgen mal probieren

restive herald
#

Denkst du, es passt, wenn ich meinen Cookie Clicker in meinen allg. Bot reinmache oder lieber nen extra bot

tall gorge
#

ich denke es passt, machst du auch einen cookie clicker?

restive herald
#

Ja, hatte die Idee schon vor 2 Monaten peeposhy

#

Hab mir auch iwann im Lateinunterricht nen Plan gezeichnet 😂

tall gorge
#

xd

restive herald
#

Und angefangen den Code zu schreiben aber hab dann erstmal andere Sachen weitergemacht

tall gorge
#

ok, ich habe bis jetzt erst den ganz normalen button und wie so einen shop für upgrades

restive herald
#

Ok

restive herald
#

Imports müssten die normalen cog Imports sein und aiosqlite noch.

ruby sparrow
#

weiss einer wie geht das

ruby sparrow
#
import discord
from discord.ext import commands
from discord.commands import slash_command


import sqlite3


conn = sqlite3.connect('tickets.db')
c = conn.cursor()

c.execute('''
    CREATE TABLE IF NOT EXISTS tickets (
        id INTEGER PRIMARY KEY AUTOINCREMENT,
        user_id INTEGER,
        channel_id INTEGER,
        status TEXT DEFAULT 'open'
    )
''')

conn.commit()

Mod_role = 1112015077541949545
Log_Channel = 1112015078498250788
category_id = 1112015078116573228

class Ticket(commands.Cog):
    def __init__(self, bot):
        self.bot = bot

    

    @commands.Cog.listener()
    async def on_ready(self):
        self.bot.add_view(TutorialView(self.bot))
        self.bot.add_view(main(self.bot))

@slash_command()
async def createticket(ctx):
    embed = discord.Embed(title="Support Ticket", description="Klicke auf den Button, um ein Ticket zu erstellen.", color=0x00ff00)
    await ctx.send(embed=embed, view=TicketView())

class TicketView(discord.ui.View):
    def __init__(self):
        super().__init__()

        self.add_item(Button(style=ButtonStyle.green, label='Ticket erstellen', custom_id='create_ticket'))

    async def on_button_click(self, interaction: discord.Interaction, button: discord.ui.Button):
        if button.custom_id == 'create_ticket':
            category = discord.utils.get(interaction.guild.categories, name='Tickets')
            if not category:
                category = await interaction.guild.create_category('Tickets')

            overwrites = {
                interaction.guild.default_role: discord.PermissionOverwrite(read_messages=False),
                interaction.user: discord.PermissionOverwrite(read_messages=True)
            }
            channel = await category.create_text_channel(name=f'ticket-{interaction.user.name}', overwrites=overwrites)
            await channel.send(f'{interaction.user.mention} Dein Ticket wurde erstellt.')

            c.execute("INSERT INTO tickets (user_id, channel_id) VALUES (?, ?)", (interaction.user.id, channel.id))
            conn.commit()

@slash_command()
async def closeticket(ctx):
    category = discord.utils.get(ctx.guild.categories, name='Tickets')
    if category:
        if isinstance(ctx.channel, discord.TextChannel) and ctx.channel.category == category:
            c.execute("UPDATE tickets SET status='closed' WHERE channel_id=?", (ctx.channel.id,))
            conn.commit()
            await ctx.channel.send("Ticket geschlossen.")
            await ctx.channel.edit(sync_permissions=True)
        else:
            await ctx.send("Dieser Befehl kann nur in Ticket-Kanälen verwendet werden.")
    else:
        await ctx.send("Es gibt keine Ticket-Kategorie.")

@slash_command()
async def opentickets(ctx):
    c.execute("SELECT * FROM tickets WHERE status='open'")
    tickets = c.fetchall()

    if tickets:
        embed = discord.Embed(title="Offene Tickets", color=0x00ff00)
        for ticket in tickets:
            user = bot.get_user(ticket[1])
            channel = bot.get_channel(ticket[2])
            embed.add_field(name=f"Ticket #{ticket[0]}", value=f"Benutzer: {user.mention}\nKanal: {channel.mention}", inline=False)
        await ctx.send(embed=embed)
    else:
        await ctx.send("Es gibt keine offenen Tickets.")

@slash_command()()
async def ticketinfo(ctx, ticket_id: int):
    c.execute("SELECT * FROM tickets WHERE id=?", (ticket_id,))
    ticket = c.fetchone()

    if ticket:
        user = bot.get_user(ticket[1])
        channel = bot.get_channel(ticket)[2]```
#
  File "c:\Users\Rysii\OneDrive\Desktop\test bot\main.py", line 12, in <module>
    bot.load_cogs("cogs")  # Load all cogs in the "cogs" folder
    ^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\Rysii\AppData\Local\Programs\Python\Python311\Lib\site-packages\ezcord\bot.py", line 152, in load_cogs
    self.load_extension(f"{'.'.join(path.parts)}.{name}")
  File "C:\Users\Rysii\AppData\Local\Programs\Python\Python311\Lib\site-packages\discord\cog.py", line 910, in load_extension
    self._load_from_module_spec(spec, name)
  File "C:\Users\Rysii\AppData\Local\Programs\Python\Python311\Lib\site-packages\discord\cog.py", line 777, in _load_from_module_spec
    raise errors.ExtensionFailed(key, e) from e
discord.errors.ExtensionFailed: Extension 'cogs.test' raised an error: TypeError: application_command.<locals>.decorator() missing 1 required positional argument: 'func'```
restive herald
#

Kann ich iwie den eingebauten ezcord Prefix Command bearbeitn?

solid ingot
#

ezcord selbst hat keinen prefix command eingebaut, alles was mit prefix commands zu tun hat funktioniert 1:1 so wie es bei pycord funktionieren würde

restive herald
#

Ah, kann ich den bearbeiten?

solid ingot
#

du meinst den help command

restive herald
#

Ja

solid ingot
#

hm weiß nicht, du könntest ihn entfernen

#

und einen eigenen machen

restive herald
#

wie denn?

#

eigenen hätte ich

solid ingot
#

ich kenn mich mit prefix commands nicht aus, glaube es war bot.remove_command oder so

restive herald
#

danke

#

dann kann ich glaube den anderen nd help nennen ._.

upper adder
#

Wie bekomme ich die aktuelle Zeitzone des Nutzers in ein Embed?
weil...

solid ingot
#

die zeitzone wird automatisch an die zeitzone des users angepasst

#

von discord

upper adder
#

nope. eben nicht.

#
embed=discord.Embed(
    timezone=datetime.now()
    )

Wirft das Ding da oben aus.

solid ingot
#

also einen timezone parameter gibt es bei py-cord zb gar nicht.
statt datetime.now() würde ich discord.utils.utcnow() empfehlen

#

falls deine lib das hat

#

bei meinen embeds schreibe ich zb

timestamp=discord.utils.utcnow()
upper adder
#

ja okay das geht

#

aber gibts da nicht ne andere Methode? 😅

solid ingot
#

andere methoden vielleicht, aber ich denke das ist die einfachste

urban glen
#

Hätte jemand ein Beispiel wie ich hier die guild id einbauen kann (Also das das auf jedem Server extra ist das Geld)

        @slash_command(description='Schenke einem bestimmten Member Coins!')
        @commands.guild_only()
        @commands.has_permissions(administrator=True)
        async def givecoins(self, ctx, member: discord.Member, amount: int):
            cash = await self.get_cash(ctx.author.id)
            cash1 = await self.get_cash(member.id)
            coins = amount

            em1 = discord.Embed(
                description=f'{member.mention} hat {amount} Coins erhalten.',
                color=discord.Color.green(),
                timestamp=datetime.now()
            )
            em1.set_author(name=f"{ctx.author.name}", icon_url=f'{ctx.author.display_avatar}')
            async with aiosqlite.connect(self.DB) as db:
                async with db.execute("UPDATE economy SET cash = cash + ? WHERE user_id = ?", (coins, member.id)) as cursor:
                    await db.commit()
            await ctx.respond(embed=em1)
solid ingot
#

dafür müsstest du dein DB schema überarbeiten und eine server_id hinzufügen

UPDATE economy SET cash = cash + ? WHERE user_id = ? AND server_id = ?
urban glen
#
    @commands.Cog.listener()
    async def on_ready(self):
        async with aiosqlite.connect(self.DB) as db:
            await db.execute(
                """
                CREATE TABLE IF NOT EXISTS economy (
                user_id INTEGER PRIMARY KEY,
                server_id INTEGER,
                bank INTEGER DEFAULT 0,
                cash INTEGER DEFAULT 0
                )"""
            )

    async def check_user(self, user_id):
        async with aiosqlite.connect(self.DB) as db:
            await db.execute("INSERT OR IGNORE INTO economy (user_id) VALUES (?)", (user_id,))
            await db.commit()

    async def get_cash(self, user_id):
        await self.check_user(user_id)
        async with aiosqlite.connect(self.DB) as db:
            async with db.execute("SELECT cash FROM economy WHERE user_id = ?", (user_id,)) as cursor:
                result = await cursor.fetchone()

        return result[0]

    async def get_bank(self, user_id):
        await self.check_user(user_id)
        async with aiosqlite.connect(self.DB) as db:
            async with db.execute("SELECT bank FROM economy WHERE user_id = ?", (user_id,)) as cursor:
                result = await cursor.fetchone()

        return result[0]
#

So sieht der Code darüber aus

upper adder
#

Ist es generell möglich einen Slash-Command nur für eine bestimmte Guild zu erstellen?

urban glen
upper adder
#

Was für Economy 😂

#

Glaube du verwechselst mich mit wem

urban glen
#

@slash_command(debug_guilds=[]) soweit ich weiß

upper adder
#

Ah okay! Weiß nicht ob des bei discord4py auch so ist, aber das lässt sich nachschauen

urban glen
golden sky
#

Hey kann einer mir sagen wie ich die alle Versionen alle gleichzeitig löschen kann ?

tawdry leaf
#

also wenn die datei text heißt wäre es so

golden sky
#

Hab schon danke dir

#

Bin dumm xD

ruby sparrow
#
  File "C:\Users\Rysii\AppData\Local\Programs\Python\Python311\Lib\site-packages\discord\cog.py", line 777, in _load_from_module_spec
    raise errors.ExtensionFailed(key, e) from e
discord.errors.ExtensionFailed: Extension 'cogs.Ticket' raised an error: SyntaxError: 'await' outside function (Ticket.py, line 20)
PS C:\Users\Rysii\OneDrive\Desktop\test bot> & C:/Users/Rysii/AppData/Local/Programs/Python/Python311/python.exe "c:/Users/Rysii/OneDrive/Desktop/test bot/cogs/test.py"
  File "c:\Users\Rysii\OneDrive\Desktop\test bot\cogs\test.py", line 20
    await ctx.respond(embed=embed)
    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^```
#
import discord
from discord.ext import commands
from discord.commands import slash_command


class Base(commands.Cog):
    def __init__(self, bot):
        self.bot = bot

    @slash_command(description="test")
    async def avatar(ctx, member: discord.Member = None):
     if member is None:
        member = ctx.author
    
    avatar_url = member.avatar_url
    
    embed = discord.Embed(title=f"Avatar von {member.display_name}")
    embed.set_image(url=avatar_url)
    
    await ctx.respond(embed=embed)


def setup(bot):
    bot.add_cog(Base(bot))```
urban glen
restive herald
#

ahhh danke

restive herald
urban glen
#

hast du einen neuen command erstellt der 'help' heißt?

burnt prairieBOT
#
Level Up!

Herzlichen Glückwunsch @bold lava, du bist jetzt Level 17 🎉

Du hast insgesamt 2,217 Nachrichten geschrieben.

tawdry leaf
burnt prairieBOT
#
Level Up!

Herzlichen Glückwunsch @tawdry leaf, du bist jetzt Level 39 🎉

Du hast insgesamt 9,822 Nachrichten geschrieben.

restive herald
restive herald
#

Wie meinst?

tawdry leaf
#

bot.remove_command(“help“)

#

das reicht

restive herald
#

Naja, ich wollte den Command der eingebaut war deaktivieren

#

Weil ich nd wusste wie hab ich bot.remove_command(“help“) gemacht

#

Dann wusste ich’s, hab das removed und halt help_command = None geschrieben

#

Aber der cmd geht jtzt nd mehr

tawdry leaf
#

🤔 zeig mal was du nun hast

restive herald
barren badger
#

Frage: Wie kann ich in einem on_raw_message_delete(payload) Event auf die Guild-ID zugreifen?

solid ingot
#

payload.guild_id

barren badger
#

thx

novel ore
#

Codet von euch wer mit Prerix commands

twin slate
#

Sind eigentlich genauso wie slash commands nur das du @bot.command() anstadt @bot.slash_command() machst. Und wenn du ezcord benutzt musst du einfach bot =ezcord.PrefixBot() machen

novel ore
#

Aber will das der Bot slash commands hat und prefix commands

urban glen
#

Und halt einfach slash commands hinzufügen

novel ore
#

Aber in der main muss dann ezcord.Bot einfach und wie mach ich dann prefix vommands

urban glen
#

ezcord.PrefixBot()

restive herald
novel ore
restive herald
novel ore
#

Ok

light bridge
#

Hi! Hab ne frage, ich schaue mir gerade die Coding Reihe an, aber bei diesem Command kommt immer ein Fehler in der Console. Kann mir dabei jemand helfen?

#

Also bei "Let the bot send a message"

obtuse estuary
#

Komm zurück in den talk kann dir helfen

tawdry leaf
hard pivot
#

Weiß wer wie ich den Button und das Select menü an ein embed adden kann?

hard pivot
urban glen
#

Pack den button code von der klasse TempBlackklistLevelSaveButton in die BlacklistManagerSelectAdd klasse

#

Und dann einfach beim cmd await ctx.respond(view=BlacklistManagerSelectAdd(), embed=embed)

hard pivot
urban glen
#

Aber ich weiß nicht, ob man 2 Views hinzufügen kann

solid ingot
hard pivot
solid ingot
#

eine andere möglichkeit wäre zb noch eine button klasse zu nutzen, die kannst du dann immer dynamisch zu der view klasse hinzufügen wo du den button aktuell brauchst

restive herald
#

Folgendes Problem:

Ich wusste nicht, wie man den help_command bei Pycord ausstellt.
Deswegen hab ich bot.remove_command("help") gemacht.
Nun weiß ich, dass man ihn mit `bot = ezcord.PrefixBot(help_command=None)' ausstellt.
Hab daraufhin das bot.remove_command("help") wieder entfernt, aber mein selbstgebauter help command geht nd

hard pivot
#

Habs grad versucht mit view.add_item() aber dann geht das select nicht mehr

solid ingot
#

view.add_item() ist richtig

hard pivot
#

aber das select ist ja auch vom typ discord.ui.View

solid ingot
#

also zu views kannst du keine anderen views hinzufügen. entweder machst du eine button klasse und fügst diese zu der view klasse mit dem select hinzu, oder du machst eine select klasse und fügst diese zu deiner anderen view klasse hinzu

hard pivot
restive herald
solid ingot
hard pivot
#

ok danke

solid ingot
#

beachte, dass du die callback methode einer button klasse "callback" nennen musst

solid ingot
restive herald
# solid ingot ich kenne mich zwar mit prefix nicht aus, aber eig solltest du das nicht aktivie...
    @commands.command(aliases=["info"])
    async def help(self, ctx):
        embed = discord.Embed(title="Help", description="Here are all the commands!\nThe Prefixes for the Prefix Commands are: **!,?,@ocean quest and .**", color=0x00ff00)
        embed.set_author(name=f"{ctx.author.name} in {ctx.guild.name}")
        embed.set_footer(text="ToolZ | Help")
        embed.set_image(url="https://cdn.discordapp.com/attachments/1112744179760627872/1114488239672270858/toolz_kopf.jpg")
        await ctx.send(embed=embed, view=Help(self.time))
restive herald
solid ingot
#

message content intent an?

restive herald
urban glen
#

Wird dein cog denn überhaupt geladen?

restive herald
#

Wenn ich dem Comnd nen anderen name gebe z.b. !hel dann funktioniert er ja

urban glen
#
    @commands.command(name="help", aliases=["info"])
    async def _help(self, ctx):
        embed = discord.Embed(title="Help", description="Here are all the commands!\nThe Prefixes for the Prefix Commands are: **!,?,@ocean quest and .**", color=0x00ff00)
        embed.set_author(name=f"{ctx.author.name} in {ctx.guild.name}")
        embed.set_footer(text="ToolZ | Help")
        embed.set_image(url="https://cdn.discordapp.com/attachments/1112744179760627872/1114488239672270858/toolz_kopf.jpg")
        await ctx.send(embed=embed, view=Help(self.time))
#

Dann versuchs so

#

Müsste dann auch !help gehen

restive herald
#

Dankee

golden sky
#

Hey , wieso findet mein code Import format nicht? owbohl ich es danach heruntergeladen habe

golden sky
golden sky
tawdry leaf
#

zeig mal code

golden sky
#

Kann ich es dir Peer Call zeigen

tawdry leaf
#

grad schlecht

golden sky
#

import discord
from discord.ext import commands
import os
import format

bot = commands.Bot(command_prefix='a!')
bot.remove_command('help')

async def get_server_count():
all=online=robot=0
for member in bot.get_all_members():
if member.bot:
robot += 1
else:
all += 1
if member.status != discord.Status.offline:
online += 1

return all,online,robot

async def update_count(count):
all, online, robot = count
nameTotal, nameOnline, nameBots = "total","online","bots"

await bot.edit_channel(channel=bot.get_channel(os.getenv('TOTAL')),
                       name= await format.convert_string(nameTotal + ' : ') + str(all))
await bot.edit_channel(channel=bot.get_channel(os.getenv('ONLINE')),
                       name=await format.convert_string(nameOnline + ' : ') + str(online))
await bot.edit_channel(channel=bot.get_channel(os.getenv('BOTS')),
                       name=await format.convert_string(nameBots + ' : ') + str(robot))

@bot.event
async def on_member_join(member):
await update_count(await get_server_count())

@bot.event
async def on_member_remove(member):
await update_count(await get_server_count())

@bot.event
async def on_member_update(before, after):
await update_count(await get_server_count())

@bot.event
async def on_ready():
await update_count(await get_server_count())

bot.run(os.getenv('TOKEN'))

tawdry leaf
#

zeig mal code

tawdry leaf
golden sky
golden sky
urban glen
golden sky
urban glen
#

Mein gott.. mach doch was da steht

#
import discord
from discord.ext import commands
import os
import format

bot = commands.Bot(command_prefix='a!')
bot.remove_command('help')

async def get_server_count():
    all=online=robot=0
    for member in bot.get_all_members():
        if member.bot:
            robot += 1
        else:
            all += 1
            if member.status != discord.Status.offline:
                online += 1 

    return all,online,robot

async def update_count(count):
    all, online, robot = count
    nameTotal, nameOnline, nameBots = "total","online","bots"

    await bot.edit_channel(channel=bot.get_channel(os.getenv('TOTAL')),
                           name= await format.convert_string(nameTotal + ' : ') + str(all))
    await bot.edit_channel(channel=bot.get_channel(os.getenv('ONLINE')),
                           name=await format.convert_string(nameOnline + ' : ') + str(online))
    await bot.edit_channel(channel=bot.get_channel(os.getenv('BOTS')),
                           name=await format.convert_string(nameBots + ' : ') + str(robot))

@bot.event
async def on_member_join(member):
    await update_count(await get_server_count())

@bot.event
async def on_member_remove(member):
    await update_count(await get_server_count())

@bot.event
async def on_member_update(before, after):
    await update_count(await get_server_count())

@bot.event
async def on_ready():
    await update_count(await get_server_count())

bot.run(os.getenv('TOKEN'))
tawdry leaf
urban glen
#

So

golden sky
#

das meinste xD

tawdry leaf
urban glen
tawdry leaf
golden sky
tawdry leaf
#

Format geht nur bis Python 3.6 deswegen geht es nicht

golden sky
urban glen
#

Hä, wieso kommt das jetzt?
Das hab ich garnd geschickt

golden sky
#

Ja Discord hat gerade bugs

tawdry leaf
urban glen
#

So

#

So

twin slate
#

Ich will in meiner bot activity anzeigen lassen spielt mir und dann nem random user von einem server. Das Problem ist wenn ich random.choice(guild.members) mache kommt alls member immer nur der bot member kein anderer. Deswegen wird immer Angezeit spielt mit CC x Test Bot SⱧΛⱤ𝕜҉҉#5959 und kein random mitglied. Mache ich irgendwas falsch?

urban glen
#

Hast du member intents aktiviert??

tawdry leaf
#

am besten mal den Code senden

urban glen
tawdry leaf
golden sky
#

import discord
from discord.ext import commands
import os
import aiosqlite
from discord.embeds import Embed

class serverstats(commands.Cog):
def init(self, bot):
self.bot = bot

@commands.command(aliases=["setup-serverstats"])
@commands.has_permissions(administrator=True)
async def setup_serverstats(self, ctx: commands.Context):
    db = await aiosqlite.connect("serverstats.db")
    async with db.cursor() as cursor:
        await cursor.execute('CREATE TABLE IF NOT EXISTS embed (guild_id INTEGER)')
        await cursor.execute("SELECT * FROM embed WHERE guild_id = ?", (ctx.guild.id,))
        data1 = await cursor.fetchone()
    color2 = None
    footer = None
    try:
        color2 =  data1[1]
        color = int(color2, 16)
        footer = str(data1[2])
    except:
        if color2 is None:
            color = 0xffffff
        if footer is None:
            footer = "Coded by @SSC_Network"
    
    em = discord.Embed(
        title="Serverstats Setup",
        description="Please Ping the channel where you want to send the Server stats form.",
        color=color
    )
    em.set_footer(text=footer, icon_url=ctx.guild.icon.url)
    em.set_thumbnail(url=ctx.guild.icon.url)
    await ctx.send(embed=em)

async def get_server_count():
all=online=robot=0
for member in bot.get_all_members():
if member.bot:
robot += 1
else:
all += 1
if member.status != discord.Status.offline:
online += 1

return all,online,robot

async def update_count(count):
all, online, robot = count

await bot.edit_channel(channel=bot.get_channel(os.getenv('TOTAL')), name= "total : " + str(all))
await bot.edit_channel(channel=bot.get_channel(os.getenv('ONLINE')), name= "online : " + str(online))
await bot.edit_channel(channel=bot.get_channel(os.getenv('BOTS')), name= "bots : " + str(robot))

@commands.Cog.listener()
async def on_member_join(member):
await update_count(await get_server_count())

@commands.Cog.listener()
async def on_member_remove(member):
await update_count(await get_server_count())

@commands.Cog.listener()
async def on_member_update(before, after):
await update_count(await get_server_count())

@commands.Cog.listener()
async def on_ready():
await update_count(await get_server_count())

def setup(bot):
bot.add_cog(serverstats(bot))

Brauche hierbei hilfe, wen ich !setup-serverstats mache, soll ich den channel pingen, hab ich gemacht , aber danach hört es auf...

tawdry leaf
#

@golden sky mach ein post auf!

urban glen
storm seal
viscid lake
#

hey also ka bei pycharm geht alles aber bei meinem hoster kommt

File "/home/container/main.py", line 18, in <module>
bot.load_cogs("cogs",
AttributeError: 'Bot' object has no attribute 'load_cogs'

solid ingot
#

welche packages hast du installiert?

viscid lake
#

ezcord

solid ingot
#

zeig mal die requirements datei

viscid lake
#

aiohttp==3.8.3
aiosignal==1.2.0
aiosql==6.5
aiosqlite==0.17.0
anyio==3.6.2
async-timeout==4.0.2
asyncio==3.4.3
discord-ui==5.1.6
distlib==0.3.6
py-cord
Pillow==9.2.0
#pipenv==2023.5.19
ezcord
matplotlib
PyNaCl==1.5.0
python-dateutil==2.8.2
python-dotenv==0.21.0
requests==2.28.1
string-py==0.1.2
utils==1.0.1

solid ingot
#

mach discord-ui raus

#

allgemein würde ich dir empfehlen wirklich nur die packages reinzuschreiben die du brauchst

viscid lake
#

fast alles brauche ich sogar

solid ingot
#

fast sussypeepo

viscid lake
#

kommt immer noch

opal basin
#

Hey ich hätte eine Frage code gerade eine Modmail und ich möchte das wenn man ein Ticket öffnet das da steht wer es geclaimt hat. Also die Nachricht soll bearbeitet werden sobald der Command in dem Ticket ausgeführt wurde wie geht sowas?

novel ore
#

Denke du musst denn Nachrichten id abspeichern von der nachricht die bearbeitet wird und wenn der command ausgeführt wird lädst du sie und bearbeitet dann diese Nachricht

opal basin
novel ore
opal basin
#

hab das schon wieder entfernt

opal basin
novel ore
#

Warum on_message

opal basin
#

weil das da rein soll

novel ore
#

Was soll das machen?

opal basin
#

da soll stehen wer das ticket geclaimt hat

#

das soll der user per dm bekomen 🙂

novel ore
#

Schick mal denke aber du brauchst kein on_message Event

opal basin
#

ne hab das schon entfernt wie ich das probiert hab

#

meinte das anders egal

novel ore
#

Schick einfach mal was fu gerade hast

opal basin
#

nur meine normale modmail

#

wait

novel ore
#

Bin mal kurz weg schau es mir später an

opal basin
#

ok

novel ore
opal basin
novel ore
novel ore
#

Ok welche db nutz du

opal basin
#

Ist nur ein modmail bot

novel ore
opal basin
#

Aso hmm

novel ore
#

Wüsste nicht wie es ohne gehen soll

opal basin
#

Mache das anders glaube ich mache einen Button der den Text halt bearbeitet

#

Is eh besser

#

Danke für die Hilfe

novel ore
#

Ja aber das geht dann nur im Ticket für denn Text der bei dem User idt brauchst glaub wieder eine db

opal basin
#

Uhm ok gucke später

solid ingot
novel ore
#

Du speicherst einfach die user id und die guild id und fragst dann immer beide ab

digital crypt
#
import discord
from discord.ext import commands


class spotify(commands.Cog):
    def init(self, bot):
        self.bot = bot

    async def get_spotify_infos(self, member: discord.Member):
        activity = member.activity
        if isinstance(activity, discord.Spotify):
            artist = activity.artist
            song = activity.title
            url = activity.track_url
            album = activity.album
            album_cover_url = activity.album_cover_url
            track_id = activity.track_id

            color = activity.color

            embed = discord.Embed(
                title=f"{member.name}'s Spotify",
                color=color,
            )
            embed.add_field(name="Artist", value=artist)
            embed.add_field(name="Song", value=song)
            embed.add_field(name="Album", value=album)
            embed.add_field(name="Listen to this song", value=f"[{song}]({url})")
            embed.set_thumbnail(url=album_cover_url)
            embed.set_footer(text=f"Track ID: {track_id}")
            return embed
        else:
            return None

    @discord.slash_command(name="spotify")
    async def _spotify(self, ctx: discord.Interaction, member: discord.Member):
        spotify = await self.get_spotify_infos(member)
        if spotify is None:
            return await ctx.response.send_message(
                f"{member.name} is not listening to Spotify."
            )
        await ctx.response.send_message(embed=spotify)


def setup(bot):
    bot.add_cog(spotify(bot))```
burnt prairieBOT
#
Level Up!

Herzlichen Glückwunsch @digital crypt, du bist jetzt Level 4 🎉

Du hast insgesamt 79 Nachrichten geschrieben.

digital crypt
#

warum antwortet der mir nur mit Elias's is not listening to Spotify.

urban glen
#

Hast du presence intents aktiviert?

digital crypt
#

wo macht man das ?

urban glen
#

Im developer portal und im code

digital crypt
#

ja wait

digital crypt
urban glen
#

Bei den Intents

digital crypt
#

okay

#

thy

#

geht drodzdem nicht

urban glen
#

Okay, mit der Info kann ich nicht viel anfangen

mental hamlet
novel ore
#

#🔗・bots message

#

Was denn

#

Weinst meinst

solid ingot
#

was verstehst du denn nicht?

urban glen
#

Wtf??

Sag doch einfach, was genau du nicht verstehst

Wir können nicht viel anfangen mit "das verstehe ich nd"

restive herald
#

discord.ext.commands.errors.CommandInvokeError: Command raised an exception: AttributeError: 'Guild' object has no attribute 'icon_url'
Python mobbt mich doch... jmd ne idee wie ichs fixen kann?

            embed.set_thumbnail(url=ctx.guild.icon_url)
solid ingot
#

icon.url

#

_ ist böse

restive herald
#

ahh

solid ingot
#

achte aber drauf dass die guild dafür auch ein icon haben muss

restive herald
#

hab ich schon

#

aber danke

ruby sparrow
#

@solid ingot ich hab eine frage zu ezcord

solid ingot
#

gerne, aber dann stell doch direkt die frage statt mich zu pingen

ruby sparrow
solid ingot
#

ein logging system nicht. ezcord ist eher um einfacher code zu schreiben, aber nicht für fertige bot features

ruby sparrow
solid ingot
#

ezcord ist nicht für fertige bot features

urban glen
urban glen
#

Warum soll ich es dir zeigen?

Du hast bestimmt einen Browser mit einer Suchmaschine.

#

Kleiner Tipp: Man macht es mit Events

#

Wenn du sowas unbedingt willst, dann sei halt nicht faul und google / lies die Dokumentationen

burnt prairieBOT
#

Mein Discord Server
https://discord.gg/zfvbjTEzv6

▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬
Mein Hosting* ► https://tidd.ly/3gJufg6
Code auf Github ► https://github.com/tibue99/tutorial-bot

PYCORD
Docs ► https://docs.pycord.dev/
Guide ► https://guide.pycord.dev/introduction/
Discord Server ► https://discord.gg/pycord

Discord Developer Portal ► https://discord...

▶ Play video
barren badger
restive herald
#

Kann mir kurz jemand die ID von nem animierten Emoji (mit dem \emojiname) besorgen? Also jmd mit nitro, sonst gehts ja nd

solar current
#

Welches emoji?

restive herald
#

müsstest dafür auf meinen server kommen kurz

solar current
#

Lad mich ein

urban glen
#

er meint das ganze emoji, also mit backslash

ruby sparrow
#

weiß jemand wie man Slashcommands makiert?

restive herald
ruby sparrow
restive herald
#

Und das setzt du halt in den chat ein

ruby sparrow
#
import discord
from discord.ext import commands
from discord.commands import slash_command

class Verify(discord.ui.View):
    def __init__(self):
        super().__init__(timeout=None)

    @discord.ui.button(
        label="Verifizieren", style=discord.ButtonStyle.green, custom_id="view7803r783"
    )
    async def callback(self, button: discord.ui.Button, interaction: discord.Interaction):
        role = interaction.guild.get_role(1043280333879136306)
        logs = interaction.guild.get_channel(1043280357262372986)
        
        if role in interaction.user.roles:
            await interaction.response.send_message("Du bist bereits verifiziert", ephemeral=True)
            return
        
        await interaction.user.add_roles(role)
        await interaction.response.send_message("Du wurdest erfolgreich verifiziert", ephemeral=True)
        
        await logs.send(f"{interaction.user.mention} wurde erfolgreich verifiziert")


class VerifyCog(commands.Cog):
    def __init__(self, bot):
        self.bot = bot
        
    @commands.Cog.listener()
    async def on_ready(self):
        self.bot.add_view(Verify())
        
    @slash_command(description="Verify Setup", default_member_permissions=8)
    async def verify(self, interaction: discord.Interaction):
        await interaction.channel.send(view=Verify())
        await interaction.response.send_message("Erfolgreich", ephemeral=True)
    
def setup(bot):
    bot.add_cog(VerifyCog(bot))```
#
Traceback (most recent call last):
  File "C:\Users\Rysii\AppData\Local\Programs\Python\Python311\Lib\site-packages\discord\client.py", line 378, in _run_event    
    await coro(*args, **kwargs)
  File "C:\Users\Rysii\AppData\Local\Programs\Python\Python311\Lib\site-packages\discord\bot.py", line 1164, in on_connect      
    await self.sync_commands()
  File "C:\Users\Rysii\AppData\Local\Programs\Python\Python311\Lib\site-packages\discord\bot.py", line 719, in sync_commands    
    registered_commands = await self.register_commands(
                          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\Rysii\AppData\Local\Programs\Python\Python311\Lib\site-packages\discord\bot.py", line 588, in register_commands
    data = [cmd["command"].to_dict() for cmd in filtered_deleted]
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\Rysii\AppData\Local\Programs\Python\Python311\Lib\site-packages\discord\bot.py", line 588, in <listcomp>       
    data = [cmd["command"].to_dict() for cmd in filtered_deleted]
            ^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\Rysii\AppData\Local\Programs\Python\Python311\Lib\site-packages\discord\commands\core.py", line 862, in to_dict
    ] = self.default_member_permissions.value
        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
AttributeError: 'int' object has no attribute 'value'```
solar current
# ruby sparrow

Wo cmdid steht musst du die Id vom command eintragen und bei Befehl den Namen vom Befehl

solar current
#

und bei cmd name den Name vom Command

solar current
#

Ja und dann abschicken

ruby sparrow
solar current
#

Ist die Id auch vom Befehl?

solar current
#

Dann auf Servereinstellungen dann Integration oder wie das heißt, auf den Bot und dort die Befehls id kopieren

burnt prairieBOT
#
Level Up!

Herzlichen Glückwunsch @solar current, du bist jetzt Level 5 🎉

Du hast insgesamt 94 Nachrichten geschrieben.

Du hast <@&1024276691205496872> erhalten!

burnt prairieBOT
#
Level Up!

Herzlichen Glückwunsch @ruby sparrow, du bist jetzt Level 20 🎉

Du hast insgesamt 1,925 Nachrichten geschrieben.

Du hast <@&1032922136068763718> erhalten!

solar current
#

Jo kann aber nicht reden bin auf Arbeit

ruby sparrow
restive herald
ruby sparrow
ruby sparrow
#
  File "c:\Users\Rysii\OneDrive\Desktop\Panda Moderation bot\main.py", line 41, in <module>
    bot.run(os.getenv("TOKEN"))
  File "C:\Users\Rysii\AppData\Local\Programs\Python\Python311\Lib\site-packages\discord\client.py", line 717, in run
    return future.result()
           ^^^^^^^^^^^^^^^
  File "C:\Users\Rysii\AppData\Local\Programs\Python\Python311\Lib\site-packages\discord\client.py", line 696, in runner
    await self.start(*args, **kwargs)
  File "C:\Users\Rysii\AppData\Local\Programs\Python\Python311\Lib\site-packages\discord\client.py", line 660, in start
    await self.connect(reconnect=reconnect)
  File "C:\Users\Rysii\AppData\Local\Programs\Python\Python311\Lib\site-packages\discord\client.py", line 599, in connect
    raise PrivilegedIntentsRequired(exc.shard_id) from None
discord.errors.PrivilegedIntentsRequired: Shard ID None is requesting privileged intents that have not been explicitly enabled in the developer portal. It is recommended to go to https://discord.com/developers/applications/ and explicitly enable the privileged intents within your application's page. If this is not possible, then consider disabling the privileged intents instead.```
restive herald
ruby sparrow
#

warum ist das rot?

restive herald
#

falsch eingerückt ig

#

du musst das noch nen tab nach rechts tuen

ruby sparrow
restive herald
#

schick mal bissl mehr bild

ruby sparrow
#

ja

#

warte

#
import discord
from discord.ext import commands
from discord.commands import slash_command


class Baseok(commands.Cog):
    def __init__(self, bot):
        self.bot = bot

    @slash_command(description="setup")
    async def setup(self,ctx, channel: discord.VoiceChannel, template: str):
        guild = ctx.guild
        if template == "Default":
            default_template = await ctx.guild.create_template(name="Default Template", description="Default server settings.")
        await channel.edit(name="Default Voice Channel")
        await channel.edit(sync_permissions=True, reason="Applying Default template")
        await ctx.guild.edit(template=default_template)
        await ctx.send(f"Setup complete! Applied Default template to {channel.name}.")


def setup(bot):
    bot.add_cog(Baseok(bot))```
#
Traceback (most recent call last):
  File "C:\Users\Rysii\AppData\Local\Programs\Python\Python311\Lib\site-packages\discord\commands\core.py", line 124, in wrapped
    ret = await coro(arg)
          ^^^^^^^^^^^^^^^
  File "C:\Users\Rysii\AppData\Local\Programs\Python\Python311\Lib\site-packages\discord\commands\core.py", line 978, in _invoke
    await self.callback(self.cog, ctx, **kwargs)
  File "c:\Users\Rysii\OneDrive\Desktop\Panda Moderation bot\cogs\setup.py", line 17, in setup
    await ctx.guild.edit(template=default_template)
                                  ^^^^^^^^^^^^^^^^
UnboundLocalError: cannot access local variable 'default_template' where it is not associated with a value```
restive herald
#

meine als bild, discord verschiebt es immer

restive herald
ruby sparrow
#

als bild oder code?

restive herald
#

bild

ruby sparrow
restive herald
#

das jeweils noch einmal tabben

#

also von elif die beiden zeilen und bei else

ruby sparrow
restive herald
#

du hast falsch formatiert

#

mach bei den beiden genau das was du auch bei dem if template == “Default“:
gemacht hast

tawdry leaf
tawdry leaf
#

Dann muss er nun gehen 😂

ruby sparrow
#
import discord
from discord.ext import commands
from discord.commands import slash_command


class Baseok(commands.Cog):
    def __init__(self, bot):
        self.bot = bot

    @slash_command(description="setup")
    async def setup(self,ctx, channel: discord.VoiceChannel, template: str):
        guild = ctx.guild
        if template == "Default":
            default_template = await ctx.guild.create_template(name="Default Template", description="Default server settings.")
        await channel.edit(name="Default Voice Channel")
        await channel.edit(sync_permissions=True, reason="Applying Default template")
        await ctx.guild.edit(template=default_template)
        await ctx.send(f"Setup complete! Applied Default template to {channel.name}.")

        if template == "boosts":
            boosts_template = await ctx.guild.create_template(name="boosts Template", description="Default server settings.")
        await boosts.edit(name="boostst Voice Channel")
        await boosts.edit(sync_permissions=True, reason="Applying boosts template")
        await ctx.guild.edit(template=boosts_template)
        await ctx.send(f"Setup complete! Applied Default template to {boosts.name}.")



def setup(bot):
    bot.add_cog(Baseok(bot))```
#
Traceback (most recent call last):
  File "C:\Users\Rysii\AppData\Local\Programs\Python\Python311\Lib\site-packages\discord\commands\core.py", line 124, in wrapped
    ret = await coro(arg)
          ^^^^^^^^^^^^^^^
  File "C:\Users\Rysii\AppData\Local\Programs\Python\Python311\Lib\site-packages\discord\commands\core.py", line 978, in _invoke
    await self.callback(self.cog, ctx, **kwargs)
  File "c:\Users\Rysii\OneDrive\Desktop\Panda Moderation bot\cogs\setup.py", line 17, in setup
    await ctx.guild.edit(template=default_template)
                                  ^^^^^^^^^^^^^^^^
UnboundLocalError: cannot access local variable 'default_template' where it is not associated with a value
tawdry leaf
#

Was versuchst du

solid ingot
#

wenn das if-statement false wird ist default_template nicht definiert, du willst es aber trotzdem benutzen

tawdry leaf
#

Kannst auch einf guild.edit weil hast oben guild definiert

solid ingot
#

bitte immer nur den code schicken, der für das problem relevant ist

#

ein modal ist kein view

#

modals musst du mit send_modal senden

solid ingot
#

wieso magst du das tun? wenn ein modal kommt, sieht der user die nachricht doch gar nicht

#

könntest du aber mit einem followup machen denke ich

novel ore
#

Mach denn /command soll er gleich das modal senden

#

Denke da braucht man nichts

tawdry leaf
#

defer

novel ore
#

Why

tawdry leaf
#

pycord?

novel ore
#

Zeig mal code

#

Code

#

Muss das nicht am Ende hin

#

Eine Zeile vor dem Senden

#

Oder verwechsel ich da was @tawdry leaf

tawdry leaf
#

response.send_modal

tawdry leaf
novel ore
#

Ah ok

novel ore
tawdry leaf
#

glaube ich

novel ore
#

Zeig mal ganzen error

#

Wenn das von Lucky nicht geht

tawdry leaf
novel ore
#

Also await ctx.respond.send_modal oder

tawdry leaf
#

ka wie des bei pycord is

#

mal des modal video schauen

novel ore
#

Genau

#

Oder denn code auf GitHub anschauen

solid ingot
#
embed.add_field(name="Test", value="hi", inline=True)
solid ingot
#

ich denke pycharm beschwert sich nur über den style. was wird angezeigt wenn du mit der maus drüberfährst?

#

jo das ist nicht schlimm, nur ein style tipp von pycharm

#

du kannst auf reformat the file drücken um das automatisch zu korrigieren

#

das ist eigentlich ganz gut, pycharm hilft dir dabei die offiziellen python style richtlinien einzuhalten

#

nervt manchmal, aber du schreibst dann deutlich ordentlicheren code wenn du alle pycharm sachen enhältst

#

und andere devs werden dich mehr mögen wenn sie deinen code lesen peepolove

opal basin
#

Hey hätte eine frage ich möchte das wenn ich mein modmail ticket schließe das ein post in einem forum erstellt wird und dann die ganzen nachrichten aus dem ticket da rein gesendet werden wie funktioniert sowas

solid ingot
#

also wenn du die nachrichten so da rein schicken möchtest, dass die user auch richtig angezeigt werden, wird es etwas komplizierter, weil du dann webhooks benutzen musst

opal basin
burnt prairieBOT
#
Level Up!

Herzlichen Glückwunsch @opal basin, du bist jetzt Level 3 🎉

Du hast insgesamt 38 Nachrichten geschrieben.

opal basin
#
                    forum_channel = self.bot.get_channel(1114883152620556290)
                    file = discord.File(fileName)
                    embed2 = discord.Embed(title=user.name, description="test")
                    thread = await forum_channel.create_thread(name=None, content=None, embed=embed2, files=[file])

das habe ich aber ja

solid ingot
#

was genau funktioniert nicht?

opal basin
#
Ignoring exception in view <View_Opened timeout=None children=2> for item <Buttons_Close style=<ButtonStyle.danger: 4> url=None disabled=False label='Ticket schließen' emoji=<PartialEmoji animated=False name='❌' id=None> row=None>:
Traceback (most recent call last):
  File "C:\Users\Lenovo\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.11_qbz5n2kfra8p0\LocalCache\local-packages\Python311\site-packages\discord\ui\view.py", line 414, in _scheduled_task
    await item.callback(interaction)
  File "c:\Users\Lenovo\Desktop\Discord Bots\VOID MODMAIL\cogs\modmail.py", line 262, in callback
    thread = await forum_channel.create_thread(name=None, content=None, embed=embed2, files=[file])
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\Lenovo\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.11_qbz5n2kfra8p0\LocalCache\local-packages\Python311\site-packages\discord\channel.py", line 1305, in create_thread
    data = await state.http.send_files(
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\Lenovo\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.11_qbz5n2kfra8p0\LocalCache\local-packages\Python311\site-packages\discord\http.py", line 371, in request
    raise HTTPException(response, data)
discord.errors.HTTPException: 400 Bad Request (error code: 50008): Cannot send messages in a non-text channel
solid ingot
#

wo sendest du die nachricht im code?

opal basin
#

ich erstelle das forum und dann wird doch das embed2 rein gesendet oder sehe ich das falsch

solid ingot
#

hm es kann sein dass du auf den pycord master branch wechseln musst

#

im changelog steht irgendwas von einem bug fix bei forum channels

opal basin
#

was ist das

solid ingot
#

pip install git+https://github.com/Pycord-Development/pycord

opal basin
#

und was ist dann anders

solid ingot
#

das ist dann einfach eine neuere version

opal basin
#
PS C:\Users\Lenovo\Desktop\Discord Bots\VOID MODMAIL> pip install git+https://github.com/Pycord-Development/pycord
Collecting git+https://github.com/Pycord-Development/pycord
  Cloning https://github.com/Pycord-Development/pycord to c:\users\lenovo\appdata\local\temp\pip-req-build-iq6flmgq
  ERROR: Error [WinError 2] Das System kann die angegebene Datei nicht finden while executing command git version  
ERROR: Cannot find command 'git' - do you have 'git' installed and in your PATH?

[notice] A new release of pip is available: 23.0.1 -> 23.1.2
[notice] To update, run: C:\Users\Lenovo\AppData\Local\Microsoft\WindowsApps\PythonSoftwareFoundation.Python.3.11_qbz5n2kfra8p0\python.exe -m pip install --upgrade pip
solid ingot
#

achso, du musst git dafür installiert haben

opal basin
solid ingot
#

welchen hoster hast du denn?

opal basin
#

endelon

tawdry leaf
#

müsste beim host dabei stehen

solid ingot
#

falls du deine packages in eine requirements.txt datei schreiben musst, kannst du das dort rein schreiben

git+https://github.com/Pycord-Development/pycord
opal basin
# solid ingot falls du deine packages in eine requirements.txt datei schreiben musst, kannst d...
Collecting git+https://github.com/Pycord-Development/pycord
  Cloning https://github.com/Pycord-Development/pycord to c:\users\lenovo\appdata\local\temp\pip-req-build-qxy4xei_
  ERROR: Error [WinError 2] Das System kann die angegebene Datei nicht finden while executing command git version
ERROR: Cannot find command 'git' - do you have 'git' installed and in your PATH?

[notice] A new release of pip is available: 23.0.1 -> 23.1.2
[notice] To update, run: C:\Users\Lenovo\AppData\Local\Microsoft\WindowsApps\PythonSoftwareFoundation.Python.3.11_qbz5n2kfra8p0\python.exe -m pip install --upgrade pip

hab aber git installiert

solid ingot
#

hm, das musst du mit deinem hoster klären

opal basin
tawdry leaf
opal basin
# solid ingot hm, das musst du mit deinem hoster klären
Ignoring exception in view <View_Opened timeout=None children=2> for item <Buttons_Close style=<ButtonStyle.danger: 4> url=None disabled=False label='Ticket schließen' emoji=<PartialEmoji animated=False name='❌' id=None> row=None>:
Traceback (most recent call last):
  File "/home/container/.local/lib/python3.10/site-packages/discord/ui/view.py", line 421, in _scheduled_task
    await item.callback(interaction)
  File "/home/container/cogs/modmail.py", line 262, in callback
    thread = await forum_channel.create_thread(name=None, content=None, embed=embed2, files=[file])
  File "/home/container/.local/lib/python3.10/site-packages/discord/channel.py", line 1291, in create_thread
    data = await state.http.start_forum_thread(
  File "/home/container/.local/lib/python3.10/site-packages/discord/http.py", line 371, in request
    raise HTTPException(response, data)
discord.errors.HTTPException: 400 Bad Request (error code: 50035): Invalid Form Body
In name: This field is required
Ignoring exception in on_message
Traceback (most recent call last):
  File "/home/container/.local/lib/python3.10/site-packages/discord/client.py", line 399, in _run_event
    await coro(*args, **kwargs)
  File "/home/container/cogs/modmail.py", line 153, in on_message
    await message.add_reaction("📨")
  File "/home/container/.local/lib/python3.10/site-packages/discord/message.py", line 1599, in add_reaction
    await self._state.http.add_reaction(self.channel.id, self.id, emoji)
  File "/home/container/.local/lib/python3.10/site-packages/discord/http.py", line 367, in request
    raise NotFound(response, data)
discord.errors.NotFound: 404 Not Found (error code: 10003): Unknown Channel

Das ist in meinem hosting

#

das mit add_reaction ist egal

ruby sparrow
#

Wiss einer wie geht das?

restive herald
#

wie was geht

tawdry leaf
tawdry leaf
restive herald
fierce dove
#

Wie kann ich PIL importieren

ruby sparrow
burnt prairieBOT
#
solid ingot
fierce dove
fierce dove
ruby sparrow
fierce dove
#

@ruby sparrow welchen

ruby sparrow
fierce dove
#

Bin

#

@ruby sparrow jetzt

ruby sparrow
#

zeig mal live

#

und reden mal

fierce dove
#

Kann nicht

ruby sparrow
#

hab kein bock zu schreiben

fierce dove
#

Reden

ruby sparrow
#

du bist voll mute

fierce dove
#

Gleich

restive herald
# fierce dove

Kenn mich jtzt nd richtig aus aber da steht was davon, dass der eine ordner nicht gefunden wurde

tawdry leaf
restive herald
tawdry leaf
ruby sparrow
#

@fierce dove du muss schon reden onhe reden kann man nicht helfen

restive herald
tawdry leaf
#

🗣️

fierce dove
#

Komme in 20sekunde

tawdry leaf
restive herald
#

👍

ruby sparrow
#

wie kann man verify link machen?

tawdry leaf
restive herald
tawdry leaf
ruby sparrow
#
Traceback (most recent call last):
  File "c:\Users\Rysii\OneDrive\Desktop\Panda Moderation bot\main.py", line 39, in <module>
    bot.load_cogs("cogs")
    ^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\Rysii\AppData\Local\Programs\Python\Python311\Lib\site-packages\ezcord\bot.py", line 152, in load_cogs
    self.load_extension(f"{'.'.join(path.parts)}.{name}")
  File "C:\Users\Rysii\AppData\Local\Programs\Python\Python311\Lib\site-packages\discord\cog.py", line 910, in load_extension
    self._load_from_module_spec(spec, name)
  File "C:\Users\Rysii\AppData\Local\Programs\Python\Python311\Lib\site-packages\discord\cog.py", line 777, in _load_from_module_spec
    raise errors.ExtensionFailed(key, e) from e
discord.errors.ExtensionFailed: Extension 'cogs.verify' raised an error: OperationalError: unable to open database file
PS C:\Users\Rysii\OneDrive\Desktop\Panda Moderation bot> ```
tawdry leaf
#

unable to database file da musst du irgendwie was mit bearbeiten machen glaube ich hatte den nie

tawdry leaf
#

ich weiß nicht genau wie man den fixed xD

solid ingot
#

deine datenbank kann nicht geöffnet werden, zb weil du einen falschen pfad angegeben hast

urban glen
ruby sparrow
upper adder
#

Braucht ein Server immer noch Lvl2 damit ein Bot private Threads erstellen kann?

tawdry leaf
#

idk

solid ingot
upper adder
#

Dann antworte doch nicht. Die Frage ging auch nicht direkt an dich 👌 @tawdry leaf

upper adder
#

Danke! 👍🏻

#

Wie geht das denn in discord.py mit dem private Threads erstellen?

solid ingot
upper adder
#

Ah okay!
Ich habe nämlich in den Docs gerade sowas hier gefunden...

#

Was ist ein Store-Channel btw.? OMEGALUL

solid ingot
upper adder
#

Ah okay 👍🏻
Ja das kann ich ja mal testen ^^

solid ingot
upper adder
#

Pls what 😂

#

Aber okay

#

Seeehr... Interessant

urban glen
#

code

solid ingot
#

kommt drauf an. runternehmen musst du die Datei meistens nicht, die aktualisiert sich automatisch beim neuen hochladen.

es gibt auch die die möglichkeit sich per SSH zum Server zu verbinden und die Dateien auf dem Server direkt in Pycharm oder VSC zu bearbeiten

#

also meistens wird die Datei dann automatisch ersetzt

#

schau Mal online kommt auf deinen Editor an

urban glen
#

?

urban glen
#

aso

opal basin
#

Hey frage wie speichere ich ab was man in einem select menü ausgewählt hat

solid ingot
#

hast du eine View Klasse oder eine select klasse?

solid ingot
#

weiß es Grad nicht auswendig, aber hier werden beide Möglichkeiten gezeigt

opal basin
opal basin
#

ich möchte das dan in meinem Text steht ... hat ... ausgewählt

#

ah doch warte bin dumm

#

sorry

opal basin
# solid ingot weiß es Grad nicht auswendig, aber hier werden beide Möglichkeiten gezeigt
select_response = await self.bot.wait_for(
    "select_option",
    timeout=120,
    check=lambda interaction: interaction.user.id == message.author.id and interaction.message.id == select_message.id
)

await select_response.respond(type=InteractionType.ChannelMessageWithSource, content="")

selected_values = select_response.values
if selected_values:
    selected_options = [option.label for option in select.options if option.value in selected_values]
    selected_options_text = "\n".join(selected_options)
    await interaction.response.send_message(f"Du hast folgende Auswahl getroffen:\n{selected_options_text}")
else:
    await interaction.response.send_message("Du hast keine Auswahl getroffen.")

hätte das so gemacht aber joa

normal sundial
#

hey wie kann ich ein dropdown menu mit daten aus einer datenbank erzeugen wo ich dei inhalte nciht kenne aus dem select menü video wird mir das nicht ganz klar und ich bekomme es nicht ganz hin es geht nur ums erstellen des dropdowns. danke vorab

solid ingot
#

dafür musst du mit einer select klasse arbeiten und die options dann an diese selectklasse übergeben, so in etwa

 
    @slash_command()
    async def select2(self, ctx):
        options = [
            discord.SelectOption(label="Python", description="Python Beschreibung", emoji="👑"),
            discord.SelectOption(label="Java", description="Java Beschreibung", emoji="💻"),
            discord.SelectOption(label="Javascript", description="Javascript Beschreibung", emoji="🚩", value="JS")
        ]   
        select = TutorialSelect(options)

        view = discord.ui.View(timeout=None)
        view.add_item(select)

        await ctx.respond(view=view)

class TutorialSelect(discord.ui.Select):
    def __init__(self, options):
        super().__init__(
            min_values=1,
            max_values=1,
            placeholder="Triff eine Auswahl",
            options=options
        )
normal sundial
#

wenn das an mich ging ich habs aktuell so _


async def get_shop():
    async with aiosqlite.connect("main.db") as db:
        async with db.execute("SELECT ANZG_Name FROM shop")as cursor:
            result = await cursor.fetchall()
            nun = []
            for i in result:
                nun.append(i[0])
    return nun

class Economy(commands.Cog):
    def __init__(self, bot: discord.Bot):
        self.bot = bot
        self.DB = f"main.db"
        self.eco = "🪙"

    @commands.Cog.listener()
    async def on_ready(self):
        print('Modul: Economy Geladen')
    @slash_command(name="remove_item", description="Enferne Items aus dem shop")
    @discord.default_permissions(administrator=True)
    async def shop_remove_item(self, ctx):
        await ctx.respond("Was willst du entfernen?", view=RemoveView())

def setup(bot):
    bot.add_cog(Economy(bot))

class RemoveDropdown(discord.ui.View):
    def __init__(self, ctx):
        self.ctx = ctx

    shops = await get_shop()
    options = [
        discord.SelectOption(
            label=f"{shops}", description="Entferne rollen aus dem Shop!")
    ]

    @discord.ui.select(
        max_values=1,
        placeholder="Triff eine Auswahl",
        options=options
    )
    async def select_callback1(self, select, interaction: discord.Interaction):
        await interaction.respond(f"du hast dich für {select.values[0]} Entschieden!")

        async with aiosqlite.connect("main.db") as db:
            await db.execute(
                "DELETE FROM shop WHERE ANZG_name=?", (
                    select.values[0].name,)
            )
            await db.commit()

aber logischerweise kann es nicht gehen da ich ja nicht an der stelle awaiten kann.

solid ingot
#

du hast eine view klasse, du brauchst allerdings eine select klasse

#

die optionen musst du dann im slash commands laden und an die select klasse übergeben

normal sundial
#

also die remove dropdown von view zu select mit daten übergabe okay

#

hab jetzt das ```py

class RemoveDropdown(discord.ui.Select):
def init(self, ctx, shops):
self.ctx = ctx
self.shops = shops

options = [
    discord.SelectOption(
        label=f"{self.shops}", description="Entferne rollen aus dem Shop!")
]
aber da steht jetzt self is not defined bei label=f"...
solid ingot
normal sundial
#

@slash_command(name="remove_item", description="Enferne Items aus dem shop")
    @discord.default_permissions(administrator=True)
    async def shop_remove_item(self, ctx):
        shops = await get_shop()
        await ctx.respond("Was willst du entfernen?", view=RemoveView(shops))

class RemoveView(discord.ui.View):
    def __init__(self, ctx, shops):
        self.ctx = ctx
        self.shops = shops

    options = [
        discord.SelectOption(
            label="Rollen", description="Enferne Rollen aus dem shop!")
    ]

    @discord.ui.select(
        max_values=1,
        placeholder="Triff eine Auswahl",
        options=options
    )
    async def select_callback(self, select, interaction: discord.Interaction):
        await interaction.respond(f"du hast dich für {select.values[0]} Entschieden!")
        await interaction.respond("welche Rolle willst du entfernen?", view=RemoveDropdown(self.shops))

class RemoveDropdown(discord.ui.Select):
    def __init__(self, options):
        super().__init__(
            min_values=1,
            max_values=1,
            placeholder="Triff eine Auswahl",
            options=options
        )
        
    async def select_callback1(self, select, interaction: discord.Interaction):
        await interaction.respond(f"du hast dich für {select.values[0]} Entschieden!")

        async with aiosqlite.connect("main.db") as db:
            await db.execute(
                "DELETE FROM shop WHERE ANZG_name=?", (
                    select.values[0].name,)
            )
            await db.commit()

#

habs jetzt so aber bekomme nen error Application Command raised an exception: TypeError: RemoveView.__init__() missing 1 required positional argument: 'shop s'

#

übergebe es doch überall

upper adder
#

Kennt ihr einen Import in Python um einen Random String zu erzeugen?

solid ingot
solid ingot
upper adder
#

So? Ich dachte das gibt nur Random Nmb zurück?

normal sundial
solid ingot
# upper adder So? Ich dachte das gibt nur Random Nmb zurück?

naja das ist eine von vielen sachen, die man damit machen kann. du kannst dir aber zb auch eine liste mit buchstaben holen und dann daraus ein zufälliges element auswählen, um daraus ein zufälligen string zu generieren

import string
import random

random_word = ""
for i in range(5):
    random_word += random.choice(string.ascii_letters)
#

string.ascii_letters ist eine liste mit buchstaben, und random.choice wählt einen zufälligen buchstaben davon aus

solid ingot
upper adder
normal sundial
#

so?

class RemoveView(discord.ui.View):
    def __init__(self, ctx, shops):
        self.ctx = ctx
        self.shops = shops
        

    options = [
        discord.SelectOption(
            label="Rollen", description="Enferne Rollen aus dem shop!")
    ]

    @discord.ui.select(
        max_values=1,
        placeholder="Triff eine Auswahl",
        options=options
    )
    async def select_callback(self, select, interaction: discord.Interaction):

        select = RemoveDropdown(self.shops)

        view = discord.ui.View(timeout=None)
        view.add_item(select)

        await interaction.respond(f"du hast dich für {select.values[0]} Entschieden!")
        await interaction.respond("welche Rolle willst du entfernen?", view=view)
solid ingot
#

jetzt hast du wieder eien view klasse, du brauchst aber eine select klasse

normal sundial
#

das ist die erste die gecalled wird

#
class RemoveView(discord.ui.View):
    def __init__(self, ctx, shops):
        self.ctx = ctx
        self.shops = shops
        

    options = [
        discord.SelectOption(
            label="Rollen", description="Enferne Rollen aus dem shop!")
    ]

    @discord.ui.select(
        max_values=1,
        placeholder="Triff eine Auswahl",
        options=options
    )
    async def select_callback(self, select, interaction: discord.Interaction):

        select = RemoveDropdown(self.shops)

        view = discord.ui.View(timeout=None)
        view.add_item(select)

        await interaction.respond(f"du hast dich für {select.values[0]} Entschieden!")
        await interaction.respond("welche Rolle willst du entfernen?", view=view)

class RemoveDropdown(discord.ui.Select):
    def __init__(self, shops):
        super().__init__(
            min_values=1,
            max_values=1,
            placeholder="Triff eine Auswahl",
            options=shops
        )

    async def select_callback1(self, select, interaction: discord.Interaction):
        await interaction.respond(f"du hast dich für {select.values[0]} Entschieden!")

        async with aiosqlite.connect("main.db") as db:
            await db.execute(
                "DELETE FROM shop WHERE ANZG_name=?", (
                    select.values[0].name,)
            )
            await db.commit()
#

habs grade so:

    @slash_command(name="remove_item", description="Enferne Items aus dem shop")
    @discord.default_permissions(administrator=True)
    async def shop_remove_item(self, ctx):
        shops = await get_shop()
        select = RemoveDropdown(shops)

        view = discord.ui.View(timeout=None)
        view.add_item(select)

        await ctx.respond(view=view)
        
        await ctx.respond("Was willst du entfernen?", view=view)

    @slash_command(name='buyitem', description='Kaufe dir ein Item aus dem Shop.')
    async def buyitem(self, ctx):
        await ctx.respond(view=Dropdown())

class RemoveView(discord.ui.Select):
    def __init__(self, ctx, shops):
        self.ctx = ctx
        self.shops = shops
        
        options = [
        discord.SelectOption(
            label="Rollen", description="Enferne Rollen aus dem shop!")
    ]

        super().__init__(
            min_values=1,
            max_values=1,
            placeholder="Triff eine Auswahl",
            options=options
        )

    async def select_callback(self, select, interaction: discord.Interaction):

        select = RemoveDropdown(self.shops)

        view = discord.ui.View(timeout=None)
        view.add_item(select)

        await interaction.respond(f"du hast dich für {select.values[0]} Entschieden!")
        await interaction.respond("welche Rolle willst du entfernen?", view=view)


class RemoveDropdown(discord.ui.Select):
    def __init__(self, shops):
        super().__init__(
            min_values=1,
            max_values=1,
            placeholder="Triff eine Auswahl",
            options=shops
        )

    async def select_callback1(self, select, interaction: discord.Interaction):
        await interaction.respond(f"du hast dich für {select.values[0]} Entschieden!")

        async with aiosqlite.connect("main.db") as db:
            await db.execute(
                "DELETE FROM shop WHERE ANZG_name=?", (
                    select.values[0].name,)
            )
            await db.commit()
burnt prairieBOT
#
Level Up!

Herzlichen Glückwunsch @normal sundial, du bist jetzt Level 10 🎉

Du hast insgesamt 353 Nachrichten geschrieben.

Du hast <@&1032921984612433952> erhalten!

normal sundial
#

jetzt gibt es Application Command raised an exception: AttributeError: 'str' object has no attribute 'to_dict'

solid ingot
#

schick mal den traceback

normal sundial
#
Traceback (most recent call last):
  File "C:\Users\Angel\Desktop\alles\Bot2023\lib\site-packages\discord\commands\core.py", line 124, in wrapped
    ret = await coro(arg)
  File "C:\Users\Angel\Desktop\alles\Bot2023\lib\site-packages\discord\commands\core.py", line 978, in _invoke
    await self.callback(self.cog, ctx, **kwargs)
  File "C:\Users\Angel\PycharmProjects\Bot2023\Cogs\economy.py", line 316, in shop_remove_item
    await ctx.respond(view=view)
  File "C:\Users\Angel\Desktop\alles\Bot2023\lib\site-packages\discord\interactions.py", line 566, in respond
    return await self.response.send_message(*args, **kwargs)
  File "C:\Users\Angel\Desktop\alles\Bot2023\lib\site-packages\discord\interactions.py", line 863, in send_message
    payload["components"] = view.to_components()
  File "C:\Users\Angel\Desktop\alles\Bot2023\lib\site-packages\discord\ui\view.py", line 222, in to_components
    children = [item.to_component_dict() for item in group]
  File "C:\Users\Angel\Desktop\alles\Bot2023\lib\site-packages\discord\ui\view.py", line 222, in <listcomp>
    children = [item.to_component_dict() for item in group]
  File "C:\Users\Angel\Desktop\alles\Bot2023\lib\site-packages\discord\ui\select.py", line 405, in to_component_dict
    return self._underlying.to_dict()
  File "C:\Users\Angel\Desktop\alles\Bot2023\lib\site-packages\discord\components.py", line 362, in to_dict
    payload["options"] = [op.to_dict() for op in self.options]
  File "C:\Users\Angel\Desktop\alles\Bot2023\lib\site-packages\discord\components.py", line 362, in <listcomp>
    payload["options"] = [op.to_dict() for op in self.options]
AttributeError: 'str' object has no attribute 'to_dict'

The above exception was the direct cause of the following exception:

Traceback (most recent call last):
  File "C:\Users\Angel\Desktop\alles\Bot2023\lib\site-packages\discord\bot.py", line 1133, in invoke_application_command
    await ctx.command.invoke(ctx)
  File "C:\Users\Angel\Desktop\alles\Bot2023\lib\site-packages\discord\commands\core.py", line 375, in invoke
    await injected(ctx)
  File "C:\Users\Angel\Desktop\alles\Bot2023\lib\site-packages\discord\commands\core.py", line 132, in wrapped
    raise ApplicationCommandInvokeError(exc) from exc
discord.errors.ApplicationCommandInvokeError: Application Command raised an exception: AttributeError: 'str' object has no attribute 'to_dict'
normal sundial
tawdry leaf
#

wichtig und richtig

restive herald
#

Ignoring exception in modal <cogs.giveaway.Modal object at 0x110641960>:
Traceback (most recent call last):
File "/Users/konjarehm/PycharmProjects/toolsdcbo/venv/lib/python3.10/site-packages/discord/ui/modal.py", line 341, in dispatch
await value.callback(interaction)
File "/Users/konjarehm/PycharmProjects/toolsdcbo/cogs/giveaway.py", line 77, in callback
gewinner = random.randint(1, int(teilnehmer))
File "/Library/Frameworks/Python.framework/Versions/3.10/lib/python3.10/random.py", line 370, in randint
return self.randrange(a, b+1)
File "/Library/Frameworks/Python.framework/Versions/3.10/lib/python3.10/random.py", line 353, in randrange
raise ValueError("empty range for randrange() (%d, %d, %d)" % (istart, istop, width))
ValueError: empty range for randrange() (1, 1, 0)

Was heißt das denn?
Code

        teilnehmer = 0


        teilnehmer2 = 0
        async with aiosqlite.connect("giveaway.db") as db:
            async with db.execute(
                    """
                    SELECT user_id FROM giveaway
                    WHERE giveaway_id = ?
                    """, (msg.id,)) as cursor:
                async for row in cursor:
                    teilnehmer += 1
                if teilnehmer == 1 or 0:
                    await interaction.channel.send("Sorry, nobody or only one person joined the giveaway so it got canceled. ")
                else:
                    gewinner = random.randint(1, teilnehmer)
solid ingot
#

das ist illegal angrycat

#

beachte außerdem, dass die if abfrage if teilnehmer == 1 or 0: wahrscheinlich nicht so gewollt ist, das or 0 ist immer false. besser wäre teilnehmer <= 1

normal sundial
solid ingot
normal sundial
#

view ist <class 'discord.ui.view.View'>

solid ingot
#

hm komisch

normal sundial
#

aber wie ich es habe ist richtig?

urban tiger
# normal sundial ```Ignoring exception in command remove_item: Traceback (most recent call last):...

Dein Fehler liegt bei der Klasse RemoveDropdown, um genau zu sein bei options=shops.
So sollte es korrekt sein. - Es kann natürlich auch sein das dein Fehler an einer anderen Stelle des Codes auftritt und du die Options korrekt übergeben hast, jedoch kann dies dein Fehler verursacht haben.

class RemoveDropdown(discord.ui.Select):
    def __init__(self, shops):
        options = [discord.SelectOption(label=shop, value=shop) for shop in shops]

        super().__init__(
            min_values=1,
            max_values=1,
            placeholder="Triff eine Auswahl",
            options=options
        )
normal sundial
#

dann ist es ja doch nicht so wie timo es sagte

urban tiger
#

Wie gesagt, es kann deinen Fehler verursacht haben. Ob das jetzt deinen Fehler tatsächlich verursacht hat wird sich zeigen, indem du den Code mal probierst.

normal sundial
#

jetzt wird was ausgeführt allerdings nicht so wie es soll

#

so hab ich es:

class RemoveView(discord.ui.Select):
    def __init__(self, ctx, shops):
        self.ctx = ctx
        self.shops = shops

        options = [
            discord.SelectOption(
                label="Rollen", description="Enferne Rollen aus dem shop!")
        ]

        super().__init__(
            placeholder="Triff eine Auswahl",
            options=options
        )

    async def select_callback(self, select, interaction: discord.Interaction):
        selects = RemoveDropdown(self.shops)

        view = discord.ui.View(timeout=None)
        view.add_item(selects)

        await interaction.respond(f"du hast dich für {select.values[0]} Entschieden!")
        await interaction.respond("welche Rolle willst du entfernen?", view=view)


class RemoveDropdown(discord.ui.Select):
    def __init__(self, shops):
        options = [discord.SelectOption(label=shop, value=shop) for shop in shops]

        super().__init__(
            placeholder="Triff eine Auswahl",
            options=options
        )

    async def select_callback1(self, select, interaction: discord.Interaction):
        await interaction.respond(f"du hast dich für {select.values[0]} Entschieden!")

        async with aiosqlite.connect("main.db") as db:
            await db.execute(
                "DELETE FROM shop WHERE ANZG_name=?", (
                    select.values[0].name,)
            )
            await db.commit()

aber er springt direkt auf die rollen wahl

#

er soll aber vorher die iengabe nehmen rollen zu entfernen und dann erst welche und nicht direkt fragen welche

urban tiger
normal sundial
#

Ich möchte ein Shop system haben wo man z.b rollen oder anderen stuff (der noch kommt) kaufen kann aktuell nur eine Rolle und da soll der Befehl erst Mal fragen was aus dem Shop entfernt werden soll und dann fragen welches "Item" so etwas verständlicher?

#

Und der Fehler ist dass er direkt die angabe aus der Datenbank nimmt

urban tiger
#

Welche Klasse wird den zuerst aufgerufen? Dein Code und deine Nachricht ist für mich nicht verständlich, was genau du jetzt möchtest.

burnt prairieBOT
#
Level Up!

Herzlichen Glückwunsch @urban tiger, du bist jetzt Level 2 🎉

Du hast insgesamt 8 Nachrichten geschrieben.

Du hast <@&1042123300970696705> erhalten!

urban tiger
#

Wird zuerst die Klasse RemoveDropdown oder die Klasse RemoveView aufgerufen?

normal sundial
#

Zuerst die dropdown

urban tiger
#

Wenn zuerst die Klasse RemoveDropdown aufgerufen wird, macht dieser Code keinen Sinn.

selects = RemoveDropdown(self.shops)

view = discord.ui.View(timeout=None)
view.add_item(selects)

await interaction.respond("welche Rolle willst du entfernen?", view=view)
#

Damit rufst du die Klasse RemoveDropdown nochmal auf.

normal sundial
#

sorry zu erst die view

urban tiger
#

Naja dann macht der Code fast gar kein Sinn.
Du wirfst in der Klasse RemoveView die Auswahl komplett weg, weshalb die Klasse RemoveView für mich nicht einleuchtet.
Du machst mit der Auswahl vom Spieler gar nichts, du verweist ihn einfach auf eine neue Klasse.

Ich verstehe deshalb dein Problem überhaupt nicht.

#

Eventuell kann jemand anderes dein Problem verstehen. Dein Code und dein Anliegen macht für mich leider keinen Sinn. Tut mir leid.

normal sundial
#

naja das anliegen kann ich nicht noch deutlicher erklären der code muss kein sinn ergeben da ich kein profi bin und sonst nicht fragen würde.

es soll ein shop sein wo es admin befehle gibt womit items aus dem shop entfernt werden und zuerst soll in dem befehl geklärt werden dass es sich um rollen handelt und dann soll erfragt werden welche rollen entfernt werden sollen.

restive herald
normal sundial
#

jetzt führt der die RemoveView nicht mehr aus.

    @slash_command(name="remove_item", description="Enferne Items aus dem shop")
    @discord.default_permissions(administrator=True)
    async def shop_remove_item(self, ctx):
        shops = await get_shop()
        select = RemoveView(shops)

        view = discord.ui.View(timeout=None)
        view.add_item(select)

        await ctx.respond("Was willst du entfernen?", view=view)

class RemoveView(discord.ui.Select):
    def __init__(self, shops):
        self.shops = shops
        print(1)

        options = [discord.SelectOption(label="Rollen", description="Enferne Rollen aus dem shop!")]

        print(2)
        super().__init__(
            placeholder="Triff eine Auswahl",
            options=options
        )
        print(3)

    async def select_remove_callback(self, select, interaction: discord.Interaction):
        print(3.5)
        selects = RemoveDropdown(self.shops)
        print(4)

        view = discord.ui.View(timeout=None)
        view.add_item(selects)
        print(5)
        await interaction.respond(f"du hast dich für {select.values[0]} Entschieden!")
        print(6)
        if "Rollen" in select.values[0]:
            print(7)
            await interaction.respond("welche Rolle willst du entfernen?", view=view)


class RemoveDropdown(discord.ui.Select):
    def __init__(self, shops):
        options = [discord.SelectOption(label=shop, value=shop) for shop in shops]

        super().__init__(
            placeholder="Triff eine Auswahl",
            options=options
        )
    async def select_callback(self, select, interaction: discord.Interaction):
        await interaction.respond(f"du hast dich für {select.values[0]} Entschieden!")

        async with aiosqlite.connect("main.db") as db:
            await db.execute(
                "DELETE FROM shop WHERE ANZG_name=?", (
                    select.values[0].name,)
            )
            await db.commit()

kann bitte nochmal jemand drüber schauen?

#

bis zum 3ten print geht alles ich bin überfragt grade.

solid ingot
#

deine callback methode muss callback heißen, nicht select_remove_callback

#

den namen kannst du dir zwar bei view klassen aussuchen, aber bei select klassen nicht

normal sundial
#

und bei der zweiten geht callback1 ?

solid ingot
#

was genau meinst du mit der zweiten?

normal sundial
#

in der zweiten klasse

#

also remove dropdown

solid ingot
#

nein, bei select klassen musst du das immer callback nennen

#

nur bei view klassen darfst du dir den namen aussuchen

#

nenn am besten auch mal RemoveView um, da das ja gar keine view klasse ist, also nur um verwirrungen zu vermeiden

normal sundial
#

wenn ich es einfach nur callback nenne dann wird es gelb markiert

solid ingot
#

vielleicht weil du noch einen select parameter hast, den müsstest du auch entfernen

normal sundial
#

aber ich brauche doch das select objekt

solid ingot
#

ja, aber aus dem callback musst du es entfernen

normal sundial
#

wie greife ich dann auf das ausgewählte objekt zu?

solid ingot
#

auf das select kannst du mit self zugreifen. mit self greifst du im prinzip auf die aktuelle klasse zu, und das ist ja die select klasse

normal sundial
#

also self.values[0] ?

solid ingot
#

ja kann sein

normal sundial
#

scheint zu klappen danke

urban glen
#

Warum funktioniert dieser Code nicht?

    @commands.Cog.listener()
    async def on_guild_join(self, ctx):
        name = str(ctx.guild.name)
        channel = self.bot.get_channel(1116029009692733470)
        await channel.send(
            f"Ich bin nun auf einem neuen Server: {name}\n")

Error:

Ignoring exception in on_guild_join
Traceback (most recent call last):
  File "D:\Bot\testing Interpreter\Lib\site-packages\discord\client.py", line 378, in _run_event
    await coro(*args, **kwargs)
  File "D:\Bot\testing\cogs\user.py", line 181, in on_guild_join
    name = str(ctx.guild.name)
               ^^^^^^^^^
AttributeError: 'Guild' object has no attribute 'guild'
solid ingot
#

on_guild_join bekommt kein ctx, sondern eine guild übergeben

#
async def on_guild_join(self, guild):
    name = str(guild.name)
restive herald
#

wie bekomm ich die id von der msg wo ein button angehangen ist? sussypeepo

solid ingot
restive herald
#

bzw abgeschickt

solid ingot
#

welche nachricht möchtest du denn?

restive herald
#

meine wie ich in den button code die id von der gvw message reinbekomm

#

muss ich die übergeben?

solid ingot
#

also die ID von einer message, wo der button nicht direkt dran ist? das müsstest du dann übergeben ja

restive herald
#

kann kurz jmd was testen?

#

also meine giveaway sys.

#

müsst nur auf nen button klicken sussypeepo

novel ore
#

Ich hab bei einem command @commands.is_owner() wie kann ich einen text senden wenn der user nicht der owner vom bot ist das dann kein error kommt

solid ingot
#

evtl auch mit checkfailure, bin mir aber gerade nicht sicher

restive herald
#

Wie kann ich ne MSG von ner interaction bearbeiten? xd

solid ingot
#

zb mit interaction.response.edit_message

restive herald
#

ahh da muss nen response hin, danke

restive herald
solid ingot
#

welche genau?

restive herald
#

Ich habe nen modal. wenn das ausgefüllt wurde, kommt ne msg mit text und nach ner zeit soll diese msg bearbeitet werden

solid ingot
#

und das was ich geschrieben habe bearbeitet ne andere message? hast du das im modal callback gemacht?

solid ingot
#

interaction.message.edit?

restive herald
#

ich try mal

#

AttributeError: 'NoneType' object has no attribute 'edit'

solid ingot
#

ah, ist die nachricht ephemeral?

restive herald
#

nope

upper adder
#

Jemand eine Idee, warum der mir immer sagt, dass meine Nachricht einen nicht erlauben Datentyp hat, obwohl ich PNG sende? kekHands

#

Damit meine ich kein Error, sondern eine Response in Discord

twin slate
#

Warum macht man im on_message event message: discord.Message? Normalerweise geht auch nur message soweit ich weiß. Sonst kann ich dir leider nicht Helfen

burnt prairieBOT
#
Level Up!

Herzlichen Glückwunsch @twin slate, du bist jetzt Level 2 🎉

Du hast insgesamt 8 Nachrichten geschrieben.

Du hast <@&1042123300970696705> erhalten!

upper adder
twin slate
#

Ok wusste ich nicht

ruby sparrow
#
import discord 
from discord.ext import commands
from discord.commands import slash_command


class info(commands.Cog):
    def __init__(self, bot):
        self.bot = bot


    @slash_command(description="zeig dir info über dem bot an !🐼")
    async def info(self,ctx):
        embed = discord.Embed(title= "Bot-Infomationen", description="hier seid einige Informationen über dem bot:", color=discord.Color.red())
        embed.set_author(name=bot.user.name, icon_url=bot.user.avatar.url)
        embed.add_field(name="Entwickler", value="dein Name zb deine discord name!", inline=False)
        embed.add_field(name="verson", value="1.0.0",inline=False)
        embed.add_field(name="Server", value=f"Der Bot befindet sich auf {len(bot.guilds)} Servern",inline=False)
        embed.set_footer(text="© 2023 bot-Name. Alle Rechte vorbehalten.")



def setup(bot):
    bot.add_cog(info(bot))```
#
Traceback (most recent call last):
  File "C:\Users\Rysii\AppData\Local\Programs\Python\Python311\Lib\site-packages\discord\commands\core.py", line 124, in wrapped
    ret = await coro(arg)
          ^^^^^^^^^^^^^^^
  File "C:\Users\Rysii\AppData\Local\Programs\Python\Python311\Lib\site-packages\discord\commands\core.py", line 978, in _invoke
    await self.callback(self.cog, ctx, **kwargs)
  File "c:\Users\Rysii\OneDrive\Desktop\Panda Moderation bot\cogs\info.py", line 14, in info
    embed.set_author(name=bot.user.name, icon_url=bot.user.avatar.url)
                          ^^^
NameError: name 'bot' is not defined```
novel ore
#

Musst self.bot schreiben

burnt prairieBOT
#
Level Up!

Herzlichen Glückwunsch @novel ore, du bist jetzt Level 14 🎉

Du hast insgesamt 942 Nachrichten geschrieben.

ruby sparrow
novel ore
#

Nein bei embed.set_author steht nur bot