#Allgemeine Hilfe
1 messages · Page 3 of 1
das heißt ?
das ist nicht da weil ich das auf einen server debugt habe ?
genau
nein
kein problem mein bester

also wenn du die role hast, kannst du das mit ```py
if role in user.roles:
print("User hat diese Rolle")
role wäre hier das rollen objekt. wenn du nur die ID der rolle hast, müsstest du erst eine liste mit allen rollen IDs bekommen, die der user hat, und das dann so checken:
if ID in [role.id for role in user.roles]:
der name reicht leider nicht, du bräuchtest schon das role objekt
zum beispiel mit role = guild.get_role(ID)
hey stehe gerade aufn schlauch und bräuchte hilfe, mein discord bot hat im moment folgenden output
die größen die dort stehen bekomme ich aus einer api
um diese aber in normale größen umzuwandeln muss ich auf eine andere api zugreifen, diese hab ich auch schon
und jz meine frage wie kann ich die sachen am besten abspeichern und abgleichen und dann ersetzten , ich möchte natürlich das die normale größe im embed steht und nicht der size code
machst du für jeden size code einen einzelnen api call, um die normale größe zu bekommen?
ich weiß gar nicht, ob ich es irgendwo abspeichern würde. wäre es nicht möglich, die andere API aufzurufen und die ergebnisse direkt ins embed zu schreiben?
ne beim 2. api call wird ein abruf gemacht wo ich alle sizes bekomme mit sizecode
beim 1. api abruf werden nur die verfügbaren sizecodes angezeigt, welche auf lager sind
ist das alles in einem string?
response von der api ist json welche ich parse und dann in einen string speichere , kann sonst auch wenn ihr zeit habt screen sharing machen , vlt kann ich das problem dann besser erklären
ja, wenn du magst kann ich gleich in #1020759567421931620 kommen
jo
Nice command embed
Wie hast du das gemacht!?
Hast du es mit ``` gemacht?
habs jz geschaft 
ja genau
Und die letzte Update?
Zufällig mach ich sowas ähnliches für eine Video games
Es sollte Ausrüstung anzeigen was empfohlen wurde
Lol, Genshin Impact und 7DSGC
da bekomm ich nen wert zB 67832423 und den wandle ich mit
release_date = f"<t:{str(int(delta.total_seconds()))}:R>"
um
was meinst mit sql ?
bekomme von der api diesen wert
"modificationDate": "2022-09-06T04:42:00.000Z"
den brech ich dann runter in sekunden und kann das dann so schön anzeigen lassen mit der discord formatierung
Traceback (most recent call last):
File "C:\Users\merto\AppData\Local\Programs\Python\Python310\lib\site-packages\discord\client.py", line 377, in _run_event
await coro(*args, **kwargs)
File "C:\Users\merto\PycharmProjects\pythonProject\cogs\Stempel.py", line 11, in on_ready
self.bot.add_view(stempelView())
File "C:\Users\merto\AppData\Local\Programs\Python\Python310\lib\site-packages\discord\client.py", line 1770, in add_view
raise ValueError(
ValueError: View is not persistent. Items need to have a custom_id set and View must have no timeout```
Kann man eigentlich mit anderen prefix auch ein autofill bekommen wie mit dem slash_command sprich das einzige was ich gefunden hab war so ein tree.
bot = commands.Bot(command_prefix='!', intents=intents)```
das nur mit einem anderen prefix
leider nicht, dass geht ausschließlich mit slash commands
welche requirements muss man auf einem linux server installieren damit der bot aus den YT tutorials läuft, bei mir meckert er schon bei bei import discord
wenn du pycord installiert hast, sollte er da nicht meckern
evtl musst du pip noch installieren: apt install python3-pip

für die doku
pip3 install py-cord
nicht
pip install py-cord
okay pip geht bei neueren python versionen
jz aber
du hast eine zu alte pycord version

Hey 👋 weiss jemand wie ich per Button jemanden eine rolle geben kann und wenn er wieder drauf drückt das die rolle von ihm weggenommen wird?

Meine jz nur wie ich die wieder weg nehme

hey leute kann mir jemand helfen mit @is_owner?
ich nutze normal slash command und es geht trotzdem nicht
@slash_command()
@commands.is_owner()
geht nicht
den commands.is_owner
es meldet ich bin kein owner@thick haven
hab owner_id schon eingestellt
bot = discord.Bot(
command_prefix=prefix,
status=status,
activity=activity,
case_insensitive=True,
owner_ids=set(os.getenv('owner_ids')),
debug_guild=os.getenv('debug_guild'),)
mein slash code check für owner
# Config ShiroSQLite database
@slash_command(
name='sql',
description = 'Konfiguriere ShiroSQLite database',
)
@option(
name='select_sql',
description='Optionen Einstellung für MySQL/SQLite',
choices = ['MySQL', 'SQLite'],
default=None
)
#@commands.is_owner() # erwühnscht
async def sql(self, ctx, select_sql):
Puh Okay
idk was da falsch ist
den error
Ignoring exception in command sql:
Traceback (most recent call last):
File "C:\Users\Manuel Berchtold\AppData\Local\Programs\Python\Python310\lib\site-packages\discord\bot.py", line 1009, in invoke_application_command
await ctx.command.invoke(ctx)
File "C:\Users\Manuel Berchtold\AppData\Local\Programs\Python\Python310\lib\site-packages\discord\commands\core.py", line 356, in invoke
await self.prepare(ctx)
File "C:\Users\Manuel Berchtold\AppData\Local\Programs\Python\Python310\lib\site-packages\discord\commands\core.py", line 278, in prepare
if not await self.can_run(ctx):
File "C:\Users\Manuel Berchtold\AppData\Local\Programs\Python\Python310\lib\site-packages\discord\commands\core.py", line 383, in can_run
return await async_all(predicate(ctx) for predicate in predicates) # type: ignore
File "C:\Users\Manuel Berchtold\AppData\Local\Programs\Python\Python310\lib\site-packages\discord\utils.py", line 564, in async_all
elem = await elem
File "C:\Users\Manuel Berchtold\AppData\Local\Programs\Python\Python310\lib\site-packages\discord\ext\commands\core.py", line 2269, in predicate
raise NotOwner("You do not own this bot.")
discord.ext.commands.errors.NotOwner: You do not own this bot.
ich weiss auch nicht wie man eine eigene check machen kann als @ parameter
so nebenbei
weiss jemand ob ich in value eine Tulpe machen kann wie zb ('DROP_SQLite','DROP')
DROP_MySQL = discord.SelectOption(
label='DROP-MySQL Option',
description='Diese Option DROP was Gewählt wurde: DATABASE , TABLE',
emoji='❎',
value='DROP_SQLite')
hast du den bot mit einem anderen discord Account erstellt?
das owner bezieht sich auf den bot, nicht auf den server
Ja in
Nein
Ist alles Dieselbe
Den Befehl hab ich auch mit meine Main acc gemacht
dann sollte es eigentlich auch schon funktionieren, ohne dass du eine owner ID festlegst.
schau nochmal, ob du da die richtige ID hast
Hab ich schon 10 angeschaut
Wei soll das genau funktionieren?
Wie gesagt es läuft alles über 2 bot und die hab ich erstellt
Der eine ist Beta und der andere offizielle bot
Wie du gesehen hast habe ich schon mal gemacht
Hey, meinst du dass direkt ein Dropdown Menü erscheint, wenn man einen Slash Command ausführt?
Dafür müsstest du einfach nur noch eine View Klasse in dein ctx.respond() tun
Ein Beispiel dafür findest du hier: https://github.com/tibue99/tutorial-bot/blob/main/Grundlagen/part15_select_menu_dropdown.py
genau, da kannst du in eine slash command option einfach eine liste mit dingen schreiben, die der user auswählen darf
choices=["Keks", "Schokolade"]
da hast du deinem command oder einer option einen verbotenen namen gegeben
evtl zu lang, oder vlt ein sonderzeichen?
Du könntest einf. _ nutzen, sonst geht es eig. nicht (denke ich)
Beispiel: hilfe_erhalten
leerzeichen bei slash commands sind nicht erlaubt, das geht nur bei user und message commands
Wie kann ich ein embed mit einem button schicken?
also du willst ein embed schicken und darunter soll ein button sein?
Ja
wenn deine view klasse TutorialView() heißt, geht das so
await ctx.respond(embed=embed, view=TutorialView())
Traceback (most recent call last):
File "C:\Users\merto\AppData\Local\Programs\Python\Python310\lib\site-packages\discord\cog.py", line 757, in _load_from_module_spec
spec.loader.exec_module(lib) # type: ignore
File "<frozen importlib._bootstrap_external>", line 879, in exec_module
File "<frozen importlib._bootstrap_external>", line 1017, in get_code
File "<frozen importlib._bootstrap_external>", line 947, in source_to_code
File "<frozen importlib._bootstrap>", line 241, in _call_with_frames_removed
File "C:\Users\merto\PycharmProjects\pythonProject\cogs\Stempel.py", line 23
await ctx.respond(embed=embed, view=stempelView())
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
SyntaxError: 'await' outside function
The above exception was the direct cause of the following exception:
Traceback (most recent call last):
File "C:\Users\merto\PycharmProjects\pythonProject\main.py", line 35, in <module>
bot.load_extension(f"cogs.{filename[:-3]}")
File "C:\Users\merto\AppData\Local\Programs\Python\Python310\lib\site-packages\discord\cog.py", line 893, in load_extension
self._load_from_module_spec(spec, name)
File "C:\Users\merto\AppData\Local\Programs\Python\Python310\lib\site-packages\discord\cog.py", line 760, in _load_from_module_spec
raise errors.ExtensionFailed(key, e) from e
discord.errors.ExtensionFailed: Extension 'cogs.Stempel' raised an error: SyntaxError: 'await' outside function (Stempel.py, line 23)
Process finished with exit code 1```
mhh
Schick mal deinen Code
da
Fehlt da beim class dass c oder hast du einf. nicht so gut geschnitten?
der code muss schon in einem command drin sein
steht da
meinst du da?
achso ups
einrückung ist falsch
nach links oder?
mein freund bedankt sich sehr an dich timo
Wie kann man eig. anzeigen lassen, wann der Befehl ausgeführt wurde?
kann man inline=False auch bei einer description nutzen?
nope
wie meinst du das genau?

def check(message):
return message.author == interaction.author
msg = await client.wait_for('message', check=check)
if msg.guild == None:
break
bekomme diesen fehler
das müsste interaction.user heißen
wait
hab nichts passendes gefunden xD
@solid ingot Halt dass der Bot dann in der Nachricht anzeigt wann der Befehl genutzt wurde bei meinem Fall wann der Benutzer gebannt wurde.
Ja
wie kann ich dann sowas machen?
habe embed.add_field ausprobiert ging aber net
Zeig mal den code vom Embed
embed.timestamp = discord.utils.utcnow()
@fickle creek Dass unter #💡・old-rollen ist die Beschreibung, dazu brauchst du kein extra Feld wann du es wie da haben möchtest
und was soll der Bot dann absenden?
mach mal await ctx.respond(embed=embed) @fickle creek
Danke, teste ich sofort aus
wie genau soll das gehen? xD
hab ich ich schon meine jz
sehe da nicht den ganzen code vom Embed zeig mal bisschen mehr
ich wil nur das dieser text sotiert ist
da fehlt ein " bei Vorsicht
gib mal den code zum kopieren
du meinst zeilenumbrüche?
ja
das geht mit "\n"
weisst du an was es liegt das mich nicht als owner sieht?
hab es herausgefunden für is_owner darf man keine id setzen
unten fehlt nach dem else etwas
weiss jemand wie ich es eleganter machen kann?
def SQL(Select_DB_SQL=None, SQL_Command=None, Database=None, Table=None, Columns=None):
if Select_DB_SQL == 'MySQL':
async with MySQL_connect() as (MyDB, mdb):
if SQL_Command == 'UPDATE':
return mdb.execute()
elif SQL_Command == 'CREATE':
return mdb.execute()
elif SQL_Command == 'SELECT':
return mdb.execute()
elif SQL_Command == 'INSER"':
return mdb.execute()
elif SQL_Command == 'ALTER':
return mdb.execute()
elif SQL_Command == 'DELETE':
return mdb.execute()
elif SQL_Command == 'DROP':
return mdb.execute()
#await db.execute(f"SELECT UserPremium FROM UserConfig WHERE (UserID='{ctx.author.id}')")
#await mdb.fetchone()
ich hab vor eine def funktion für sql auswahl der command und es sollte in Discord slash command rein gehen
kann man wenn man den überblick verloren hat irgendwie die requirements auslesen ?
das geht mit pip freeze > requirements.txt
ein schatz bist du !
die, die man manuell installiert muss man sich dann raus picken?
ja genau
wieso machst du das als html datei?
Die unteren beiden kann ich doch eigendlich weg machen oder ? 😄
das kommt drauf an, welche funktionen du hast. wenn du an keiner stelle den nachrichteninhalt brauchst, kannst du den message content intent entfernen
für das on_member_join event etc brauchst du zB den member intent
achsoooo du hast intents.all
ja dann kanns weg xD
wo ist der unterschied zwischen all & default? 😄
bei default sind ein paar standard intents mit dabei, die man aber nicht im developer portal extra aktivieren muss. bei all sind alle dabei, also auch member und message content
ah okai danke
und noch was
kann man in der .env datei nichts so einfügen?
Server = 123456789, 987654321
der haut dann fehler raus.
Arbeite nun mit Server1 und Server2
hm, das weiß ich nicht genau, ich glaube aber alles braucht eine eigene zeile
Wie meinst du mit Server?
Discord?
Dann könntest du ja [0] das hier nutzen
Neben 'Server'[1] denke ich mal
Also, ich habe gerade das YouTube video von CodingKeks gesehen und da kam dann auf einmal der Error
& C:/Users/dzwon/AppData/Local/Programs/Python/Python311/python.exe "f:/Normal/Discord/Discord Bot/program.py"
Traceback (most recent call last):
File "f:\Normal\Discord\Discord Bot\program.py", line 20, in <module>
async def greet(ctx, user: Option(discord.Member, "Der User, den du grüßen möchtest")):
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\Users\dzwon\AppData\Local\Programs\Python\Python311\Lib\site-packages\discord\commands\options.py", line 198, in __init__
from ..ext.commands import Converter
File "C:\Users\dzwon\AppData\Local\Programs\Python\Python311\Lib\site-packages\discord\ext\commands\__init__.py", line 18, in <module>
from .flags import *
File "C:\Users\dzwon\AppData\Local\Programs\Python\Python311\Lib\site-packages\discord\ext\commands\flags.py", line 57, in <module>
@dataclass
^^^^^^^^^
File "C:\Users\dzwon\AppData\Local\Programs\Python\Python311\Lib\dataclasses.py", line 1221, in dataclass
return wrap(cls)
^^^^^^^^^
File "C:\Users\dzwon\AppData\Local\Programs\Python\Python311\Lib\dataclasses.py", line 1211, in wrap
return _process_class(cls, init, repr, eq, order, unsafe_hash,
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\Users\dzwon\AppData\Local\Programs\Python\Python311\Lib\dataclasses.py", line 959, in _process_class
cls_fields.append(_get_field(cls, name, type, kw_only))
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\Users\dzwon\AppData\Local\Programs\Python\Python311\Lib\dataclasses.py", line 816, in _get_field
raise ValueError(f'mutable default {type(f.default)} for field '
ValueError: mutable default <class 'discord.utils._MissingSentinel'> for field name is not allowed: use default_factory
und ich kann ihn nicht beheben
gib mal pip freeze in die konsole ein und schicke das ergebnis
Ignoring exception in on_member_join
Traceback (most recent call last):
File "E:\Pogrammieren\lib\site-packages\discord\client.py", line 382, in _run_event
await coro(*args, **kwargs)
File "e:\Pogrammieren\Shurts dc bot\cogs\newtest.py", line 27, in on_member_join
url = data["result"][0]["media_formats"]["gif"]["url"]
KeyError: 'result'
?
aiohttp==3.8.3
aiosignal==1.2.0
async-generator==1.10
async-timeout==4.0.2
attrs==22.1.0
certifi==2022.9.24
cffi==1.15.1
charset-normalizer==2.1.1
colorama==0.4.6
discord==2.0.0
discord.py==2.0.1
frozenlist==1.3.1
h11==0.14.0
idna==3.4
multidict==6.0.2
outcome==1.2.0
py-cord==2.2.2
pycparser==2.21
PySocks==1.7.1
selenium==4.5.0
sniffio==1.3.0
sortedcontainers==2.4.0
trio==0.22.0
trio-websocket==0.9.2
urllib3==1.26.12
wsproto==1.2.0
yarl==1.8.1
es könnte daran liegen, dass du discord und discord.py installiert hast. diese funktionieren nicht mit pycord zusammen. versuch mal, diese packages zu deinstallieren und dann pycord nochmal neu zu installieren
alles klar, sekunde
lass dir am besten mal das ganze ergebnis ausgeben. wahrscheinlich gibt es kein "result" key darin
jetzt findet der irgendetwas nicht
& C:/Users/dzwon/AppData/Local/Programs/Python/Python311/python.exe "f:/Normal/Discord/Discord Bot/program.py"
Traceback (most recent call last):
File "f:\Normal\Discord\Discord Bot\program.py", line 2, in <module>
from discord.commands import Option
File "C:\Users\dzwon\AppData\Local\Programs\Python\Python311\Lib\site-packages\discord\commands\__init__.py", line 26, in <module>
from .context import *
File "C:\Users\dzwon\AppData\Local\Programs\Python\Python311\Lib\site-packages\discord\commands\context.py", line 29, in <module>
import discord.abc
ModuleNotFoundError: No module named 'discord.abc'
url = data['results']['media_formats']['gif']['url']
TypeError: list indices must be integers or slices, not str
neuer fehlercode
das sieht immer noch nach einem installationsfehler aus, schau nochmal in #🔍・pycord-help ob du alle schritte erfüllt hast
schau dir nochmal genau den code an: https://github.com/tibue99/tutorial-bot/blob/main/Fortgeschritten/api.py
hinter ["results"] fehlt noch eine zahl
klappt👍
Hast du dir das erste Tutorial von tibue angeschaut und alles befolgt?
jetzt hab ich halt py-cord neuinstalliert und alles gemacht was da stand, aber jetzt steht da wieder das gleiche vom anfang also
& C:/Users/dzwon/AppData/Local/Programs/Python/Python311/python.exe "f:/Normal/Discord/Discord Bot/program.py"
Traceback (most recent call last):
File "f:\Normal\Discord\Discord Bot\program.py", line 19, in <module>
async def greet(ctx, user: Option(discord.Member, "Der User, den du grüßen möchtest")):
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\Users\dzwon\AppData\Local\Programs\Python\Python311\Lib\site-packages\discord\commands\options.py", line 198, in __init__
from ..ext.commands import Converter
File "C:\Users\dzwon\AppData\Local\Programs\Python\Python311\Lib\site-packages\discord\ext\commands\__init__.py", line 18, in <module>
from .flags import *
File "C:\Users\dzwon\AppData\Local\Programs\Python\Python311\Lib\site-packages\discord\ext\commands\flags.py", line 57, in <module>
@dataclass
^^^^^^^^^
File "C:\Users\dzwon\AppData\Local\Programs\Python\Python311\Lib\dataclasses.py", line 1221, in dataclass
return wrap(cls)
^^^^^^^^^
File "C:\Users\dzwon\AppData\Local\Programs\Python\Python311\Lib\dataclasses.py", line 1211, in wrap
return _process_class(cls, init, repr, eq, order, unsafe_hash,
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\Users\dzwon\AppData\Local\Programs\Python\Python311\Lib\dataclasses.py", line 959, in _process_class
cls_fields.append(_get_field(cls, name, type, kw_only))
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\Users\dzwon\AppData\Local\Programs\Python\Python311\Lib\dataclasses.py", line 816, in _get_field
raise ValueError(f'mutable default {type(f.default)} for field '
ValueError: mutable default <class 'discord.utils._MissingSentinel'> for field name is not allowed: use default_factory
ja
leider funktioniert pycord noch nicht mit 3.11
achso, welche version soll ich mir herunterladen?
3.10 würde gehen
alles klar
alternativ könntest du dir auch die master version von pycord verwenden denke ich: pip install -U git+https://github.com/Pycord-Development/pycord
da bin ich mir aber nicht sicher
ok, hab jetzt 3.10 und es funktioniert. Aber was sehr nervig ist, ist, dass ich immer anstatt einfach "pip" "py -m pip" verwenden muss, hast du da eine lösung?
help
achso, das hatte ich auch vorhin
ok hab 33.11
du musst c++ sachen installieren
hast link
installier dir die community edition https://visualstudio.microsoft.com/de/downloads/
wenn du dann drinne bist, dann musst du noch "Node.js-Entwicklung", "Desktopentwicklung mit C++" und ".NET" installieren
also .NET-Desktopentwicklung
dann sollte es gehen
hm, dafür wüsste ich jetzt auch die schnelle auch keine lösung
ok, ist auch nicht zuu schlimm, danke trzd
ez
12gb chillig#
brauch hilfe
Jo
bei was jetzt
ich bin mir nd sicher aber die definition von intents, also das 2 zeilen unten drunter, muss über intents.members stehen
häö was
du musst dir vorstellen, dass der code (abgesehen von asynchrone definitionen) von oben bis unten abgelesen wird. Also muss dementsprechend auch erst die Intents-Variable festgelegt werden, dass du sie danach benutzen kannst
also
intents = discord.Intents.default()
intents.members = True
kd
sorry, da kann ich noch nd weiterhelfen, bin erst bei folge 3 im tutorial XD
der slash command ist zu weit nach rechts eingerückt
Fu bist picassos Tochter
Du*
bewerben kann man sich in #🎫・tickets 😄
ah ok
jemand einen tipp warum er nicht mit dem slash command nicht den command stream nimmt also ich benutz den command aber er wechselt nicht auf sream "lol" zb
ich hab zwar keine ahnung wie der code aussehen soll, aber ich denke es wär mal ein versuch wert, anstatt else, elif zu verwenden.
also
if typ == "game":
act = discord.Game(name = name)
elif typ == "stream":
act = discord.Streaming(
name=name,
url="..."
)
else:
print("Error")
idk ob's funktioniert, aber ich denke es wär ein versuch wert
bitte 👍
kann mir jemand dabei helfen?
https://cdn.discordapp.com/attachments/1023879357871173674/1034461716265832498/unknown.png
sowas zu machen
leider fehlt mir das wissen dazu
SELECT
naja vorerst hab ich dieses Problem.
ich möchte den oberigen text das es nach dem auswahl veschwindet wie mache ich das?
ich bin mir zwar nicht sicher was genau du willst, aber versuch mal:
SELECT DATABASES
FROM --Datenbankname
also ich will ein code erstellen für sql
es sollte auswählen welche sql
nach dem auswahl wartet es auf eine naricht als code block
wie kann ich das machen?
zusätlich sollte eine bestätigung button geben
@past slate
und dann führt bei, button die sql befehle
eh also ich kenn mich gerade noch nicht so gut damit aus, ich bin grad selbst noch am py-cord lernen
aber falls du fragen über sql code hast, dann kannst du mich fragen
naja problem hab ich gerade nur mit eine warte auf eine naricht
sicher👍 
vielleicht kannst du ein while loop machen, der solange ausgeführt wird bis der user antwortet
wie check ich ab wenn naricht geschrieben wird?
Oder was geschrieben wurde?
sekunde...
In einem cogs und als drop-down für callback
@bot.slash_command(description = "")
async def test(...):
await ctx.respond("1.")
@bot.event
async def on_message(msg):
print("2.")
idk ob's funktioniert, ist aber ein versuch wert
Also mach ich mit ein bot even in einem def?
xD
Werd ich sagen versuchen
Die Frage ist nur wie bekomme ich den Input? Also die naricht?
Wie du gesehen hast sollte das nacher als SQL Command gesendet werden
ah wait da musste noch ein msg rein und dann kannst du die nachricht, die der user gesendet hat als input verwenden ig
Bearbeitung gesehen werd ich heute Abend versuchen
ok
also zbs msg.content
Im Moment gibt nur die Option MySQL und SQLite
Tibue hat bei seine Video anders gemacht
Problem nur jetzt in einem drop-down Menü als callback
Das ist ja nur für main.
Gibt es auch für cogs?
achso, also ich bin erst bei folge 3 in seinen tutorial und ich sag gerade nur das was richtig sein könnte, habe aber selbst nicht sehr viel ahnung haha
ey, ich wollte das tutorial heute reinsuchten 😭
Gegen wir nachher #💬・chat
das kannst du entweder mit on_message machen, sie idza schon beschrieben hat, oder mit wait_for, dazu hab ich ein Video gemacht
Und on_message f
Wie funktioniert das in einem Cogs zusätzlich auch in Callback?
?
Wie geht das denn in einem view drop-down menü
Als callback
Funktioniert nicht so gut mit wait_for als callback
doch geht
Wurde aber nicht in einem Video gezeigt
wait for hab ich mir angeschaut aber es funktioniert nicht richtig in einem cogs
1:1 copy pastet
elif select_sql == 'SQLite':
await ctx.respond(embed=embedSQLite, ephemeral=True)
answer= await self.bot.wait_for('message')
await answer.reply(f'du hast {answer.content} geschrieben', ephemeral=True)
was mich interessiert und du noch nie eine video gemacht hast wie kann ich als antwort was ich geschrieben hab löschen lassen?
denn content geht nicht warum?
ohne fehler
hier es sollte als text test stehen ist aber nicht so
hast du den message content intent aktiviert?
ich hab es doch auch ein einem cog gemacht im video
so viel ich weiss ja
da hat mir jemand hier gezeigt da warst du ja dabei
naja, du musst die intents noch in das bot Objekt einfügen
also das oben und case_insensitive wegtun?
jup idk was case_insensitive=True sein sollte
es wurde mir einfach gesagt ich soll es machen
help
bot geht nd on
js? rip me
mit javascript wirst du nicht besonders viel hilfe erhalten, die meisten hier können nur python
nein war nur nen spass
achso xD
hahaha das ist nen screen von meiner ersten coding session
wo ich angefangen habe
kennst du milrato?
ey aber c# bots sind sooo verdammt kompliziert
Java Bots wahrscheinlich auch
digga der typ ist echt krass
der hat 700 commands und coded auch bots für server hoster und sowas
ja save aber ich mein schau dir das mal an:
wie funktioniert das jetzt in anbei bild
wie soll ich da rein tun?
handy xD
und der bot macht nichts außer "bereit" auszugeben
nice haha
java noch mehr kopfschmerzen trust
einfacher ist python
aber #💬・chat bitte das hier ist der Help channel
tibue wie kann ich nach meine antwort als text löschen?
answer= await self.bot.wait_for('message', check=check_author)
await answer.reply(f'du hast {answer.content} geschrieben')
und wie kann ich den antwort von bot unsichtbar machen?
answer= await self.bot.wait_for('message', check=check_author)
await answer.reply(f'du hast {answer.content} geschrieben')
kann man auch slash befehle nur für einen einzigen channel anzeigen lassen ?
naja wenn du als @ def schaffst ja
mein code
#Dropdown Menü für ShiroSQL
class ShiroSQLDropdownsSelect(discord.ui.Select):
def __init__(self):
super().__init__(
min_values=1,
max_values=1,
placeholder='Hier deine SQL Optionen',
options=SQL_Options,
custom_id='ShiroSQLDropdownsSelect'
)
async def callback(self, interaction):
#Check ob der eingabe von ctx.auhtor stammt wenn ja dann true
def check(message):
return message.author == interaction.author and message.channel == interaction.channel
# Checkt was der user gewählt hat
#await interaction.response.send_message(', ephemeral=True)
# check select if SQLite
if 'SQLite' in self.values:
print(f'"{self.values[0]}" wurde Gefählt')
await interaction.response.send_message(embed=embedSQLite, ephemeral=True)
answer= await self.interaction.wait_for('message', check=check)
await answer.reply(f'du hast {answer.content} geschrieben')
# check select if MySQL
elif 'MySQL' in self.values:
print(f'"{self.values[0]}" wurde Gefählt')
await interaction.response.send_message(embed=embedMySQL, ephemeral=True)
answer= await self.interaction.wait_for('message', check=check)
await answer.reply(f'du hast {answer.content} geschrieben')
mein fehler was da los?
"SQLite" wurde Gefählt
Ignoring exception in view <View timeout=900.0 children=1> for item <ShiroSQLDropdownsSelect placeholder='Hier deine SQL Optionen' min_values=1 max_values=1 options=[<SelectOption label='SQLite' value='SQLite' description='Diese Option wählt den SQLite' emoji=<PartialEmoji animated=False name='SQLiteIcon' id=1032218520467021895> default=False>, <SelectOption label='MySQL' value='MySQL' description='Diese Option wählt den MySQL' emoji=<PartialEmoji animated=False name='MySQL_Icon' id=1032216679578603530> default=False>] disabled=False>:
Traceback (most recent call last):
File "C:\Users\Manuel Berchtold\AppData\Local\Programs\Python\Python310\lib\site-packages\discord\ui\view.py", line 396, in _scheduled_task
await item.callback(interaction)
File "c:\Users\Manuel Berchtold\OneDrive - Kantonale Schule für Berufsbildung\Dokumente\Python\ShrioLaplaceBot\ShiroSystem\cogs\OwnerCommand.py", line 175, in callback
answer= await self.bot.wait_for('message', check=check)
AttributeError: 'ShiroSQLDropdownsSelect' object has no attribute 'bot'
ja, das kannst du in den Server Einstellungen festlegen
tibue kannst du helfen?
wenn du den bot in der View Klasse benutzen willst, musst du den bot an die View Klasse übergeben, oder du benutzt interaction.client
was soll ich in elif mysql answer ändern?
tibue
hey leute weiss jemand zufällig wie man eine bestätigung button macht?
#Button Bestätigung ShiroSQL
class ShiroMessageSQLButton(discord.ui.View):
@discord.ui.button(label='Senden', style=discord.ButtonStyle.primary, emoji=':checkmark:')
async def button_callback_checkmark(self, button, interaction):
async with aiosqlite.connect('ShiroSQLite.db') as (slite, sl):
await sl.execute()
will den button auf diese msg
answer= await self.bot.wait_for('message', check=check_author)
await answer.reply(f'du hast {answer.content} geschrieben')
#await answer.delete()
ich hab einen fertigen slash command
und ich möchte jz noch einfügen das die eingaben und der username in einem anderen channel geloggt werden , wie gehe ich da am besten vor ?
da müsstest du zuerst den channel bekommen, indem du die Channel ID zb in guild.get_channel() einsetzt. dann kannst du mit channel.send() eine Log Nachricht senden
wie kann ich eine custom def für den callback machen?
#Button Bestätigung ShiroSQL
class ShiroMessageSQLButton(discord.ui.Button):
def __init__(self, label, btStyle=discord.ButtonStyle.primary, emoji=None, callbackinput=None):
super().__init__(
label=label,
style=btStyle,
emoji=emoji,
)
async def callback(self, interaction):
await interaction
es soll eine custom callback button machen.
elif select_sql == 'MySQL':
async with MySQL_connect() as (MyDB, mdb):
await ctx.respond(embed=embedMySQL, ephemeral=True)
answer= await self.bot.wait_for('message', check=check_author)
#await answer.delete()
confirm= ShiroMessageSQLButton(
label='Confirm',
btStyle=discord.ButtonStyle.success,
emoji=':checkmark:',
).callback(interaction=await mdb.execute(answer.content)
)
view= discord.ui.View()
view.add_item(confirm)
await answer.reply(f'Dein SQL Befehl Eingabe:\nsql\n{answer.content}\n', view=view)
der custom callback input sollte das hier machen: ```py
await mdb.execute(answer.content)
import discord
from discord.ext import commands
intent = discord.intents.default()
intent.members = True
bot = commands.bot(command_prefix="!", intent=intent)
role_id = 123
guild_id = 123
class RoleButton(discord.ui.Button):
def _init_(self):
super().__init__(
Label="Verifiziere dich hier!",
style=discord.enums.ButtonStyle.blurple,
custom_id="interaction:rolebutton",
)
async def callback(self, interaction discord.interaction):
user = interaction.user
role = interaction.guild.get.role(role_id)
if role is None:
return
if role not user.roles:
await user.add_roles(role)
await interaction.response.send_message(f"O Du Bist bereits Verifiziert!"), ephemeral = True)
else:
await interaction.response.send_message (f"x Du Bist bereits Verifiziert!"), ephemeral=True)
BILD_URL = "https://cdn.discordapp.com/attachments/1034173654797398063/1034827766845161563/Unbensannt.JPG"
BESCHREIBUNG = """Willkommen auf dem BLUE Server!
Allgemeine Regeln
Verhalte dich freundlich und respektvoll!
Akzeptiere die Meinung anderer User!
:rb: Mobbing und Diskriminierung werden nicht toleriert!
:rb: Wähle dein Usernamen und Profilbild bedacht aus!
:rb: Sei kein Arsch!
:rb: Halte dich an die allgemeinen Richtlinien von Discord!
@bot.command()
async def post(ctx: commands.Context):
view = discord.ui.View(timeout=None)
view.add_item(RoleButton())
await ctx.send(f"{BILD_URL}")
await ctx.send(f"{BESCHREIBUNG}", view=view)
@bot.event
async def on_ready():
print("ONLINE!")
view = discord.ui.view(timeout=None)
view.add_item(RoleButton())
bot.add_view(view)
bot.run("Token")
Hat jemand eine Idee?
await interaction.response.send_message(f"O Du Bist bereits Verifiziert!"), ephemeral = True
else:
await interaction.response.send_message (f"x Du Bist bereits Verifiziert!"), ephemeral=True
also so ?
Nein, die Klammer zu muss hinter ehemeral=True, nicht hinter "Verifiziert!"
Achso jetzt verstanden
Line 71
das problem hat jetzt nichts mehr mit dem problem eben zu tun, hier hast du wahrscheinlich nicht alle voraussetzungen für persistent views erfüllt
sitze gerade an dem kick command. problem ist das ich nicht weiss wie ich den grund angeben soll 
code:
import discord
from discord.ext import commands
from discord.commands import slash_command , Option
class Admin(commands.Cog):
def __init__(self, bot):
self.bot = bot
@slash_command(description="Kicke einen User")
async def kick(self,
ctx,
member:Option(discord.Member, "Wähle einen Member"),
reason: Option(discord.)
):
await member.kick()
embed = discord.Embed(
title=":rotating_light: - Du wurdest gekickt!",
description="┏👮 - GEKICKT VON:
┣:construction: - GRUND:
┗:rotating_light: - ACHTUNG: Sollte sich sowas wiederholen, wirst du gebannt!"
)
await member.send(embed=embed)
@commands.Cog.listener()
async def on_application_command_error(self, ctx, error):
await ctx.respond(f"Es ist ein Fehler aufgetreten: ```{error}```")
raise error
def setup(bot):
bot.add_cog(Admin(bot))```
den grund kannst du als string angeben, also reason: Option(str)
einfach nur str oder muss ich danach noch was eingeben?
str reicht, du kannst dahinter noch eine description schreiben
jo thx
was soll ich dann unten beim embed eingeben?
f"- GRUND: {reason}"
Wie wird eigentlich angegeben welcher user dich gekickt hat?
den user kannst du mit ctx.author bekommen
ja zum beispeil, evtl musst du ctx.author noch in einen string umwandeln
also erwähne ich ihn oben?
bzw. author: Option...?
Error...
Error:
C:\Users\Georgi\AppData\Local\Programs\Python\Python310\python.exe "C:\Users\Georgi\PycharmProjects\py-cord projekt eucord ai\main.py"
ΞUROPΞ CORD ΛI#2725 ist online
Ignoring exception in command kick:
Traceback (most recent call last):
File "C:\Users\Georgi\AppData\Local\Programs\Python\Python310\lib\site-packages\discord\commands\core.py", line 124, in wrapped
ret = await coro(arg)
File "C:\Users\Georgi\AppData\Local\Programs\Python\Python310\lib\site-packages\discord\commands\core.py", line 970, in _invoke
await self.callback(self.cog, ctx, **kwargs)
File "C:\Users\Georgi\PycharmProjects\py-cord projekt eucord ai\cogs\admin.py", line 24, in kick
await member.send(embed=embed)
File "C:\Users\Georgi\AppData\Local\Programs\Python\Python310\lib\site-packages\discord\abc.py", line 1580, in send
data = await state.http.send_message(
File "C:\Users\Georgi\AppData\Local\Programs\Python\Python310\lib\site-packages\discord\http.py", line 353, in request
raise Forbidden(response, data)
discord.errors.Forbidden: 403 Forbidden (error code: 50007): Cannot send messages to this user
The above exception was the direct cause of the following exception:
Traceback (most recent call last):
File "C:\Users\Georgi\AppData\Local\Programs\Python\Python310\lib\site-packages\discord\bot.py", line 1088, in invoke_application_command
await ctx.command.invoke(ctx)
File "C:\Users\Georgi\AppData\Local\Programs\Python\Python310\lib\site-packages\discord\commands\core.py", line 374, in invoke
await injected(ctx)
File "C:\Users\Georgi\AppData\Local\Programs\Python\Python310\lib\site-packages\discord\commands\core.py", line 132, in wrapped
raise ApplicationCommandInvokeError(exc) from exc
discord.errors.ApplicationCommandInvokeError: Application Command raised an exception: Forbidden: 403 Forbidden (error code: 50007): Cannot send messages to this use```
ich glaube ich sollte ein respond erstellen damit ich den error rausfinde
der bot hat keine berechtigung, um diesem user nachrichten zu senden
inwiefern? soll ich dem bot alle perms geben oder was?
application commands?
der bot kann nachrichten zB nur senden, wenn er einen gemeinsamen server mit dem user hat
der user muss natürlich auch angeschaltet haben, dass er DMs empfangen kann
kann er ja
wenn du den user erst kickst, hat er wahrscheinlich keinen gemeinsamen server mehr mit dem bot
dann erstelle ich nh test server neben meinen haupt xd
Wie kann ich den server von dem der user gekickt wurde erwähnen?
hab btw die nachricht hingekriegt
das geht mit ctx.guild.name
hier siehst du alle attribute, auf die du mit ctx zugreifen kannst: https://docs.pycord.dev/en/stable/api.html?highlight=context#discord.ApplicationContext
#Button Bestätigung ShiroSQL
class ShiroMessageSQLButton(discord.ui.View):
def __init__(self):
super().__init__(
timeout=None,
)
def Comfirm(
content=None,
msg_id=None,):
@discord.ui.button(
label='Confirm',
style=discord.ButtonStyle.success,
emoji=':checkmark:',
)
async def button_callback(self=None, button=None, interaction=None,):
await interaction.response.send_message(content)
@discord.ui.button(
label='Cancel',
style=discord.ButtonStyle.danger,
emoji=':cancel:',
)
async def button_callback2(self, button, interaction):
await interaction.response.send
warum geht das nicht?
für den
@message_command(
name='Führt SQL Befehl von Codeblock'
)
@commands.is_owner()
async def run_sql(self, ctx, message):
if message.content.startswith('sql') and message.content.endswith(''):
conent = message.content.replace('`', '' )
conent= conent.replace('sql', '')
await ctx.respond(f'Dein SQL Befehl Eingabe:\nsql\n{conent}\nMessage ID:{message.id}', view=ShiroMessageSQLButton.Comfirm(content=conent), ephemeral=True)
print(conent)
@message_command(
name='Führt SQL Befehl von Codeblock'
)
@commands.is_owner()
async def run_sql(self, ctx, message):
if message.content.startswith('sql') and message.content.endswith(''):
conent = message.content.replace('`', '' )
conent= conent.replace('sql', '')
# Accept
button_accept = Button(
label='Confirm',
style=discord.ButtonStyle.success,
emoji=':checkmark:',
)
async def button_callback_confirm(interaction):
await interaction.response.send_message(content)
# Cancel
button_Cancel = Button(
label='Cancel',
style=discord.ButtonStyle.success,
emoji=':checkmark:',
)
async def button_callback_cancel(interaction):
await interaction.response.send_message(content)
button_accept.callback= button_callback_confirm
button_Cancel.callback= button_callback_cancel
view=View()
view.add_item(button_accept)
view.add_item(button_Cancel)
await ctx.respond(f'Dein SQL Befehl Eingabe:\nsql\n{conent}\nMessage ID:{message.id}', view=view, ephemeral=True)
print(conent)
```@thick haven
Ignoring exception in command Führt SQL Befehl von Codeblock:
Traceback (most recent call last):
File "C:\Users\Manuel Berchtold\AppData\Local\Programs\Python\Python310\lib\site-packages\discord\commands\core.py", line 127, in wrapped
ret = await coro(arg)
File "C:\Users\Manuel Berchtold\AppData\Local\Programs\Python\Python310\lib\site-packages\discord\commands\core.py", line 1541, in _invoke
await self.callback(self.cog, ctx, target)
File "c:\Users\Manuel Berchtold\OneDrive - Kantonale Schule für Berufsbildung\Dokumente\Python\ShrioLaplaceBot\ShiroSystem\cogs\OwnerCommand.py", line 68, in run_sql
button_accept = Button(
NameError: name 'Button' is not defined
The above exception was the direct cause of the following exception:
Traceback (most recent call last):
File "C:\Users\Manuel Berchtold\AppData\Local\Programs\Python\Python310\lib\site-packages\discord\bot.py", line 1009, in invoke_application_command
await ctx.command.invoke(ctx)
File "C:\Users\Manuel Berchtold\AppData\Local\Programs\Python\Python310\lib\site-packages\discord\commands\core.py", line 359, in invoke
await injected(ctx)
File "C:\Users\Manuel Berchtold\AppData\Local\Programs\Python\Python310\lib\site-packages\discord\commands\core.py", line 135, in wrapped
raise ApplicationCommandInvokeError(exc) from exc
discord.errors.ApplicationCommandInvokeError: Application Command raised an exception: NameError: name 'Button' is not defined
``` fehler
das kannst du ignorieren, ist nur eine pycharm empfehlung
intents = discord.Intents.default()
intents.member = True
ah stimmt, in der bot Klammer fehlt noch ein s
hast du nen example für nen bot ping slash command?
was soll der genau machen
bot letancy anzeigen
also halt ping anzeigen am besten im embed
in #1027677692730036294 hat dbx dazu ein Beispiel gepostet, Stichwort "about command"
wie konnte man nochmal einen slash command markieren??
bsp wie im Keks Bot bei der help nachricht :D
sodass man die anklicken kann und dann automatisch im chat dann auch aufploppen
Hat jemand eine Ahnung wie ich das beheben könnte?
Dieser Error kommt immer erst nach einer bestimmten Anzahl an Aufrufen
Kenne mich da nicht so aus warte auf einen helper oder timo
zeige mir mal bitte den code
vllt kann ich dir helfen
import json
import re
import discord
import requests
from colorama import *
from discord.commands import slash_command, Option
from discord.ext import commands, tasks
from pytube import Channel
class YoutubeNotify(commands.Cog):
def __init__(self, bot):
self.bot = bot
@commands.Cog.listener()
async def on_ready(self):
self.checkforvideos.start()
# Prüft alle 300 Sekunden die Videos
@tasks.loop(seconds=300)
async def checkforvideos(self):
with open("youtubedata.json", "r") as f:
data = json.load(f)
print(Fore.RED + "---------------Prüfe YouTube-Daten!---------------")
# Prüft die Daten in "youtubedata.json" und holt sich die Kanal-URL sowie die html der /videos Seite
for youtube_channel in data:
print(Fore.BLUE + f"----------Prüfe YouTube-Daten von {data[youtube_channel]['channel_name']}----------")
channel = f"https://www.youtube.com/channel/{youtube_channel}"
c = Channel(channel)
latest_video_url = c.video_urls[0]
# Prüft ob die url in "youtubedata.json" nicht die selbe ist wie die letzte Video url und ersetzt diese ggf.
if not str(data[youtube_channel]["latest_video_url"]) == latest_video_url:
data[str(youtube_channel)]['latest_video_url'] = latest_video_url
# dumping der Daten
with open("youtubedata.json", "w") as f:
json.dump(data, f)
# Nimmt die Channel ID und sendet die Daten
discord_channel_id = data[str(youtube_channel)]['notifying_discord_channel']
discord_channel = self.bot.get_channel(int(discord_channel_id))
msg = f"{data[str(youtube_channel)]['channel_name']} hat gerade ein Video hochgeladen: " \
f"{latest_video_url} "
await discord_channel.send(msg)
# SlashCommand erstellen um mehr YouTube Accounts hinzuzufügen
@slash_command(description="Füge einen YouTuber zu den Benachrichtigungen hinzu!")
@discord.default_permissions(administrator=True)
@discord.guild_only()
async def add_yt_notify(self, ctx, channel_id: str, *, channel_name: str, discord_channel_id: str):
with open("youtubedata.json", "r") as f:
data = json.load(f)
data[str(channel_id)] = {}
data[str(channel_id)]["channel_name"] = channel_name
data[str(channel_id)]["latest_video_url"] = "none"
data[str(channel_id)]["notifying_discord_channel"] = discord_channel_id
with open("youtubedata.json", "w") as f:
json.dump(data, f)
await ctx.respond("Daten hinzugefügt!", ephemeral=True)
# SlashCommand um Benachrichtigungen umzustellen
@slash_command(description="Ändere den Status der YouTube Benachrichtigungen")
@discord.default_permissions(administrator=True)
@discord.guild_only()
async def yt_notify(
self, ctx,
status: Option(str, choices=["aktivieren", "deaktivieren"])
):
if status == "aktivieren":
self.checkforvideos.start()
else:
self.checkforvideos.stop()
await ctx.respond("Status wurde geändert!", ephemeral=True)
def setup(bot):
bot.add_cog(YoutubeNotify(bot))
@urban glen
Oki
und das problem ist, das diese File nach einer bestimmten zeit einfach nicht mehr geht?
Sprich: am anfang geht alles und passiert auch alles aber dann plötzlich nicht mehr?
Genau so ist es
Es geht aber nicht nach einer bestimmten Zeit nicht mehr sondern ab einer bestimmten Anzahl an Aufrufen vom Loop. Ich hab die Zeiten schonmal verändert. Hat halt dann etwas länger gedauert aber der Fehler kam trotzdem
hä?
nach einer bestimmten anzahl der AUFRUFE geht der loop nicht mehr??
Jo
tf
wo holst du dir den die HTML ?
Okay ne doch nicht. Hab mich geirrt. Nach ner bestimmten Zeit nicht nach bestimmter Anzahl an Aufrufen
du hast keinerlei request's
hier nen bsp wie ich es mal gemacht hatte [ka von wann]
@tasks.loop(seconds=30)
async def checkforvideos():
with open("youtubedata.json", "r") as f:
data=json.load(f)
for youtube_channel in data:
channel = f"htps://www.youtube.com/channel/{youtube_channel}"
html = request.get(channel+"/videos").text
try:
latest_video_url = f"https://www.youtube.com/watch?v=" + re.search('(?<="videoID":").*?(?=")', html).group()
except:
continue
if not str(data[youtube_channel]["latest_video_url"]) == latest_video_url:
data[str(youtube_channel)]['latest_video_url'] = latest_video_url
with open("youtubedata.json", "w") as f:
json.dump(data, f)
discord_channel_id = data[str(youtube_channel)]['notifyinh_discord_channel']
discord_channel = client.get_channel(int(discord_channel_id))
msg = f"@everyone {data[str(youtube_channel)]['channel_name']} Just Uploaded a Video go and Check it out: {latest_video_url}"
await discord_channel.send(msg)
So hatte ich es vorher auch. Aber so ging es bei mir aus irgend einem Grund gar nicht
tf
ich bin komplett confused
eig. sollte beides funktionieren
und kein error kommen
Die Adressen hole ich mir von meiner json
{"UCc0rx1WJuRHLIY8_yPZJpJQ": {"channel_name": "Piranha", "latest_video_url": [], "notifying_discord_channel": "837035842966781953"},
"UCIxx-IdFRti5dihK3DsEb6Q": {"channel_name": "JackXP_zockt", "latest_video_url": [], "notifying_discord_channel": "837035726796226653"},
"UCRc2sPujzzAaRoZx86Ni_yw": {"channel_name": "Ennolum", "latest_video_url": [], "notifying_discord_channel": "888192888582832150"}}
ahh
ok erklärt es dann
ne ok sorry kann ich dir ned helfen sollte so eig. klappen
Joa sollte. Des is ja des Problem xD
Hier genau das selbe Problem mit meinem anderen Bot
das geht mit </Name:ID:
wie kann ich in ephermeral löschen bzw verschwinden lassen durch ein button
einfach lölschen mit delete glob ich
sicher wie kann ich den ephermeral naricht löschen?
ja sicher
okay
hab eine seltsamme error
Ignoring exception in command Run SQL Command Codeblock:
Traceback (most recent call last):
File "C:\Users\Manuel Berchtold\AppData\Local\Programs\Python\Python310\lib\site-packages\discord\commands\core.py", line 127, in wrapped
ret = await coro(arg)
File "C:\Users\Manuel Berchtold\AppData\Local\Programs\Python\Python310\lib\site-packages\discord\commands\core.py", line 1541, in _invoke
await self.callback(self.cog, ctx, target)
File "c:\Users\Manuel Berchtold\OneDrive - Kantonale Schule für Berufsbildung\Dokumente\Python\ShrioLaplaceBot\ShiroSystem\cogs\OwnerCommand.py", line 79, in run_sql
content= content.replace(f'{sql[0]}', '')
TypeError: 'Connection' object is not subscriptable
The above exception was the direct cause of the following exception:
Traceback (most recent call last):
File "C:\Users\Manuel Berchtold\AppData\Local\Programs\Python\Python310\lib\site-packages\discord\bot.py", line 1009, in invoke_application_command
await ctx.command.invoke(ctx)
File "C:\Users\Manuel Berchtold\AppData\Local\Programs\Python\Python310\lib\site-packages\discord\commands\core.py", line 359, in invoke
await injected(ctx)
File "C:\Users\Manuel Berchtold\AppData\Local\Programs\Python\Python310\lib\site-packages\discord\commands\core.py", line 135, in wrapped
raise ApplicationCommandInvokeError(exc) from exc
discord.errors.ApplicationCommandInvokeError: Application Command raised an exception: TypeError: 'Connection' object is not subscriptable
sql= ['sql', 'mysql']
# Cancel
button_cancel = Button(
label='Cancel',
style=discord.ButtonStyle.danger,
emoji=':cancel:',
)
async def button_callback_cancel(interaction):
await interaction.response.send_message(content)
button_cancel.callback= button_callback_cancel
#SQLite
if message.content.startswith(f'{sql[0]}') and message.content.endswith(''):
async with aiosqlite.connect('ShiroSQLite.db') as sql:
content = message.content.replace('`', '' )
content= content.replace(f'{sql[0]}', '')
# Accept
button_accept = Button(
label='Confirm',
style=discord.ButtonStyle.success,
emoji=':checkmark:',
)
async def button_callback_confirm(interaction):
print(content)
async with db.execute(f"""
{content}
"""
) as cursor:
feedback = await cursor.fetchone()
await interaction.response.send_message(feedback, ephemeral=True)
button_accept.callback= button_callback_confirm
#add Button
view=View()
bt_list= [button_accept, button_cancel]
# Schleife um einzelne Button Hinzufügen
for bt_add in bt_list:
view.add_item(bt_add)
await ctx.respond(f'Dein SQL Befehl Eingabe:\n{sql[0]}\n{content}\nMessage ID:{message.id}', view=view, ephemeral=True)
mein code
idk aber ich wollte nur sql[0] liste hollen aus der sql liste
was soll da falsch sein
was ich ausführen will:
CREATE TABLE
IF NOT EXISTS test(
rowID INTEGER PRIMARY KEY,
Server_Name TEXT,
Server_ID INTEGER,
Server_Premium BOOLEAN DEFAULT False,
Server_Langue TEXT,
Channel_ID_For_7DSGC_Newsletter INTEGER,
Channel_For_7DSGC_Newsletter_BOOLEAN BOOLEAN DEFAULT False
)
gelöst es lagg an den sql tulpe hab es mal vorübergehend so gemacht habt, habt ihr noch eine lösung für den tulpe sql?
hab jetzt eine andere frage:
Ignoring exception in view <View timeout=180.0 children=2> for item <Button style=<ButtonStyle.success: 3> url=None disabled=False label='Confirm' emoji=<PartialEmoji animated=False name='checkmark' id=1034804861021204510> row=None>:
Traceback (most recent call last):
File "C:\Users\Manuel Berchtold\AppData\Local\Programs\Python\Python310\lib\site-packages\discord\ui\view.py", line 396, in _scheduled_task
await item.callback(interaction)
File "c:\Users\Manuel Berchtold\OneDrive - Kantonale Schule für Berufsbildung\Dokumente\Python\ShrioLaplaceBot\ShiroSystem\cogs\OwnerCommand.py", line 89, in button_callback_confirm
async with sql.execute(f"""
File "C:\Users\Manuel Berchtold\AppData\Local\Programs\Python\Python310\lib\site-packages\aiosqlite\context.py", line 41, in __aenter__
self._obj = await self._coro
File "C:\Users\Manuel Berchtold\AppData\Local\Programs\Python\Python310\lib\site-packages\aiosqlite\core.py", line 184, in execute
cursor = await self._execute(self._conn.execute, sql, parameters)
File "C:\Users\Manuel Berchtold\AppData\Local\Programs\Python\Python310\lib\site-packages\aiosqlite\core.py", line 67, in _conn
raise ValueError("no active connection")
ValueError: no active connection
was hat mit diese error aufsicht?
Hat jemand heute Zeit für VC ab 18:00 hätte paar fragen zu SQlite
Weiss jemand was der error bedeutet? ich verstehe ihn nicht xD. ```py
C:\Users\Georgi\AppData\Local\Programs\Python\Python310\python.exe "C:\Users\Georgi\PycharmProjects\py-cord projekt eucord ai\main.py"
Traceback (most recent call last):
File "C:\Users\Georgi\AppData\Local\Programs\Python\Python310\lib\site-packages\discord\cog.py", line 757, in _load_from_module_spec
spec.loader.exec_module(lib) # type: ignore
File "<frozen importlib._bootstrap_external>", line 883, in exec_module
File "<frozen importlib._bootstrap>", line 241, in _call_with_frames_removed
File "C:\Users\Georgi\PycharmProjects\py-cord projekt eucord ai\cogs\admin.py", line 6, in <module>
class Admin(commands.Cog):
File "C:\Users\Georgi\PycharmProjects\py-cord projekt eucord ai\cogs\admin.py", line 13, in Admin
async def kick(self,
TypeError: guild_only() takes 0 positional arguments but 1 was given
The above exception was the direct cause of the following exception:
Traceback (most recent call last):
File "C:\Users\Georgi\PycharmProjects\py-cord projekt eucord ai\main.py", line 65, in <module>
bot.load_extension(f"cogs.{filename[:-3]}")
File "C:\Users\Georgi\AppData\Local\Programs\Python\Python310\lib\site-packages\discord\cog.py", line 893, in load_extension
self._load_from_module_spec(spec, name)
File "C:\Users\Georgi\AppData\Local\Programs\Python\Python310\lib\site-packages\discord\cog.py", line 760, in _load_from_module_spec
raise errors.ExtensionFailed(key, e) from e
discord.errors.ExtensionFailed: Extension 'cogs.admin' raised an error: TypeError: guild_only() takes 0 positional arguments but 1 was given
Process finished with exit code 1
Cogs in Admin hat ein fehler
Den kick Befehl anscheinend
schick mal den code wo du guild_only benutzt hast
Der ganze Code: ```py
import discord
from discord.ext import commands
from discord.commands import slash_command, Option
class Admin(commands.Cog):
def init(self, bot):
self.bot = bot
@slash_command(description="Kicke einen User")
@discord.default_permissions(administrator=True,kick_members=True)
@discord.guild_only
async def kick(self,
ctx,
member: Option(discord.Member, "Wähle einen Member"),
reason: Option(str)):
try:
await member.kick()
except discord.Forbidden:
await ctx.respond("Ich habe keine Berechtigungen, um diesen Member zu kicken")
return
await ctx.respond(f"{member.mention} wurde erfolgreich gekickt", ephemeral=True)
embed = discord.Embed(
title="🚨 - Du wurdest gekickt!",
description=f"» Du wurdest von dem `{ctx.guild.name}` Server gekickt."
)
embed.add_field(name="┏`👮` - **GEKICKT VON:**", value=ctx.author.mention, inline=False)
embed.add_field(name="┣`🚧` - **GRUND:**", value=f"`{reason}`", inline=False)
embed.add_field(name="┗🚨 - **ACHTUNG:**", value="`Sollte sich sowas wiederholen, wirst du gebannt!`",
inline=False)
await member.send(embed=embed)
@slash_command()
@commands.has_permissions(administrator=True)
async def hallo(self,ctx):
await ctx.respond("Hey")
@commands.Cog.listener()
async def on_application_command_error(self, ctx, error):
await ctx.respond(f"Es ist ein Fehler aufgetreten: ```{error}```")
raise error
def setup(bot):
bot.add_cog(Admin(bot))```
da fehlen klammern hinter guild_only
Perfekt tib macht einfach in 10 sec
😂
das war der fehler danke ^^
Tibue hatte da eine Problem wie kann ich den SQlite feedback leserlich ausgeben
ich habe jetzt nh anderes problem mir wird der hallo slash nicht angezeigt haha
Liegt bestimmt an deine einrückung
Nahh wieder ein error xd
C:\Users\Georgi\AppData\Local\Programs\Python\Python310\python.exe "C:\Users\Georgi\PycharmProjects\py-cord projekt eucord ai\main.py"
Traceback (most recent call last):
File "C:\Users\Georgi\AppData\Local\Programs\Python\Python310\lib\site-packages\discord\cog.py", line 757, in _load_from_module_spec
spec.loader.exec_module(lib) # type: ignore
File "<frozen importlib._bootstrap_external>", line 879, in exec_module
File "<frozen importlib._bootstrap_external>", line 1017, in get_code
File "<frozen importlib._bootstrap_external>", line 947, in source_to_code
File "<frozen importlib._bootstrap>", line 241, in _call_with_frames_removed
File "C:\Users\Georgi\PycharmProjects\py-cord projekt eucord ai\cogs\cooldown.py", line 10
async def hey(self,ctx):
IndentationError: unexpected indent
The above exception was the direct cause of the following exception:
Traceback (most recent call last):
File "C:\Users\Georgi\PycharmProjects\py-cord projekt eucord ai\main.py", line 65, in <module>
bot.load_extension(f"cogs.{filename[:-3]}")
File "C:\Users\Georgi\AppData\Local\Programs\Python\Python310\lib\site-packages\discord\cog.py", line 893, in load_extension
self._load_from_module_spec(spec, name)
File "C:\Users\Georgi\AppData\Local\Programs\Python\Python310\lib\site-packages\discord\cog.py", line 760, in _load_from_module_spec
raise errors.ExtensionFailed(key, e) from e
discord.errors.ExtensionFailed: Extension 'cogs.cooldown' raised an error: IndentationError: unexpected indent (cooldown.py, line 10)
Process finished with exit code 1```
habs gefixt xd
Auflösung?
Ok
Okay Problem gefixt
hey leute gibt es eine möglichkeit abzuchecken ob in message.conntent den inhalt irgenwas mit 'Hello World'
wie meinst? Also ob in einem message content ein wort enthalten ist mit leerzeichen und man dies checken kann?
ich möchte abchecken
ob diese message.content word: abchecken hat
oder wort: möchte
wie kann ich da eine schöne await autput feedback machen?
- ob es geklammt hat.
- Fehler meldung ect
mein code
#SQLite
if message.content.startswith(f'sql') and message.content.endswith(''):
content = message.content.replace('`', '' )
content= content.replace(f'sql', '')
# Accept
button_accept = Button(
label='Confirm',
style=discord.ButtonStyle.success,
emoji=':checkmark:',
)
async def button_callback_confirm(interaction):
async with aiosqlite.connect('ShiroSQLite.db') as sql:
if message.content in ['INSERT', 'SELECT',]:
async with sql.execute(
f"""
{content}
"""
) as cursor:
async for row in cursor:
row= await cursor.fetchone() or await cursor.fetchall()
await interaction.response.send_message(
f'sql\n{row}\n',
ephemeral=True
)
else:
await sql.execute(f"""
{content}
""")
await interaction.response.send_message(
f'sql\n{cursor}\n',
ephemeral=True
)
hat jemand heute zeit für call?
Welche ID?
vom slash command
Woher bekomm ich die ID vom Slash Command?
rechts klick auf den grauen kasten der dort aufplopt
@urban glen
Ah okay. Danke
hahah das kenne ich noch
warte kurz
activity = discord.Activity(type=discord.ActivityType.listening, name=f"/help")
status = discord.Status.idle
client = commands.Bot(
intents=discord.Intents.all(),
command_prefix=get_config('prefix'),
activity=activity,
status=status
)
Danke
Was mach ich falsch, dass die /commands nicht markiert werden?
Okay danke
ah bin lost
kann mir jemand sagen wie ich das hier als await message schicken kann?
genau genommen so als liste
ich find den error nicht
irgenwas mit self
Ähm
ja ich finde die stelle aber nicht
Ging es mal davor?
on den button ja
Ohne?
In deiner main.py
send(embed=embed, view=MyView())
ist bei embed =
Glaub ich
Zeig mal deine View also wo die class für die View ist

Es ist ein error mit der view
Ja
bist ja expert bro :3
xD
Bzw in der view fehlt ein self parameter
wo?
Hä?
Das sollte so funktionieren
Warte ich geh ma kurz an meinen pc wollte zwar eig. Schlafen aber egal :)
Gib mir 2-3 minuten
Danke
dein button code ist für mich next level lol
meiner?
der geht nicht
nur same
kann mir da jemand helfen?
Fehlt da nicht ()?
gleich
.
stimm wait ich schaue mal ob es funktopniert
Bin profi
Hoffe ich
xD
xD

wisst ihr was noch hier fehlt?
eine level system für Freiwilliger Helper mit bewertungen und so xD.
nice
Danke an euch alle
Bitte
der pröffiiiii digaa
bro bin komplett umsonst jzt aufgestanden 😢

Kenne mich null damit aus
Zero
ne alles gut dann geh jz mal schlafen
nop ich hab keine ahnung von db's
schau dir timos tutorial nochmal an und dann schaffst du das :D
Sag das doch gleich xD
wie meinst check ich ned
Naja eine Bewertung System für freiwillige Helper
Wenn zB die Bewertung 10/10 ist und oft könnte man zB Eine besser rolle bekommen
Kurz gesagt eine Ranking System für Freiwillige Helper
Hmm habe nen problem und glaube es liegt an der einrückung. bei mir werden die buttons und die hey nachricht nicht angezeigt:
import discord
from discord.ext import commands
from discord.commands import slash_command
class Button(commands.Cog):
def __init__(self, bot):
self.bot = bot
@slash_command()
async def button1(self,ctx):
await ctx.respond("Klicke hier", view=TutorialView())
def setup(bot):
bot.add_cog(Button(bot))
class TutorialView(discord.ui.View):
@discord.ui.button(label="Klicke hier", style=discord.ButtonStyle.green,emoji=":icons_activities:")
async def button_callback1(self,button, interaction):
await interaction.response.send_message("Hey!", ephemeral=True)
@discord.ui.button(label="Klicke hier", style=discord.ButtonStyle.green, emoji=":icons_activities:")
async def button_callback2(self, button, interaction):
button.disabled = True
await interaction.message.edit(view=self)
await interaction.response.edit_message(view=self)
await interaction.followup.send("Hey!", ephemeral=True)```
Bin so lost
Ihr hab so viele coole Projekte und ich nur Run sql command

Hab so coole Idee kann sie aber nicht umsetzen
naja ich will coden lernen damit ich nh bisschen geld verdiene xd
🥲
Naja 2 genie 1 Gedanke

Oder eher 2 Idioten 1 Gedanke
😂
dadurch kann man den bot anzeigen lassen das er schreibt
und paar andere sachen aber das ist das wofuer ich das use
was ist der error?
Cool
habs schon gefixt xd
okay xD
warum bekomme ich dies error?
Ignoring exception in view <View timeout=180.0 children=2> for item <Button style=<ButtonStyle.success: 3> url=None disabled=False label='Confirm' emoji=<PartialEmoji animated=False name='checkmark' id=1034804861021204510> row=None>:
Traceback (most recent call last):
File "C:\Users\Manuel Berchtold\AppData\Local\Programs\Python\Python310\lib\site-packages\discord\ui\view.py", line 396, in _scheduled_task
await item.callback(interaction)
File "c:\Users\Manuel Berchtold\OneDrive - Kantonale Schule für Berufsbildung\Dokumente\Python\ShrioLaplaceBot\ShiroSystem\cogs\OwnerCommand.py", line 150, in button_callback_confirm
await mysql.execute(f"""
AttributeError: 'Connection' object has no attribute 'execute'
den sql code hab ich quasi 1:1 von tibue copiert
ich arbeite aber mit sqlite, nicht mit mysql
async with aiosqlite.connect('ShiroSQLite.db') as sql:
async with sql.execute(f"""SELECT * FROM UserConfig"""
) as cursor:
feedback= await cursor.fetchall()
for results in feedback:
print(results)
return
await interaction.response.send_message(
f'sql\n{results}\n',
ephemeral=True
)
ist sqlite lmao
wieso nennst du das dann mysql? :D
ups doch nicht xD
war wohl mysql command
as sql:
schau code
Was ist mit der Einrückung oder hat das Discord nicht übernohmen?
dafür hab ich jetzt diese error,
C:\Users\Manuel Berchtold\AppData\Local\Programs\Python\Python310\lib\site-packages\discord\commands\core.py:1541: RuntimeWarning: coroutine 'Connection.cursor' was never awaited
await self.callback(self.cog, ctx, target)
RuntimeWarning: Enable tracemalloc to get the object allocation traceback
Ignoring exception in view <View timeout=180.0 children=2> for item <Button style=<ButtonStyle.success: 3> url=None disabled=False label='Confirm' emoji=<PartialEmoji animated=False name='checkmark' id=1034804861021204510> row=None>:
Traceback (most recent call last):
File "C:\Users\Manuel Berchtold\AppData\Local\Programs\Python\Python310\lib\site-packages\discord\ui\view.py", line 396, in _scheduled_task
await item.callback(interaction)
File "c:\Users\Manuel Berchtold\OneDrive - Kantonale Schule für Berufsbildung\Dokumente\Python\ShrioLaplaceBot\ShiroSystem\cogs\OwnerCommand.py", line 104, in button_callback_confirm
await sql.execute(f"""
File "C:\Users\Manuel Berchtold\AppData\Local\Programs\Python\Python310\lib\site-packages\aiosqlite\core.py", line 184, in execute
cursor = await self._execute(self._conn.execute, sql, parameters)
File "C:\Users\Manuel Berchtold\AppData\Local\Programs\Python\Python310\lib\site-packages\aiosqlite\core.py", line 67, in _conn
raise ValueError("no active connection")
ValueError: no active connection
ähm einrückung sollte keine problem sein
du hast ein await vergessen
wo den?
feedback= await (mach da mal ein leerzeichen rein)
hab gefühlt über all await
wo denn?
da ?
feedback = await cursor.fetchall()
Ja, aber auch bei Content. Davon bekomm ich Ausschläge xD
frage ist nur wo?
ich hab hier with gemacht wie beim video was soll da falsch sein?```py
async with sql.execute(f"""SELECT * FROM UserConfig"""
) as cursor:
feedback = await cursor.fetchall()
for results in feedback:
print(results)
return
Ein einfacher String reicht hier übrigens
ich kann auch alles ausgeben als string?
1:1 wie das bild hier unten?
https://cdn.discordapp.com/attachments/722167533641400392/1035489860275945542/IMG_20221028_114637.png
Datenbank🤢🤮
xD
sryyy ich muss leider damit arbeiten und hab gar keine Erfahrung.
in sqlite gibt nicht mal show
xD
Glaub sogar heute
@indigo sapphire ich empfehle dir wirklich, erstmal kleinere projekte zu machen, die du auch wirklich schaffst. die kannst du dann nach und nach erweitern. aktuell machst du viel zu schwierige projekte, bei denen du alle 2 minuten etwas nachfragen musst
idk hab nach recherche gedacht es gibt keine cursor darum
mach es lieber so wie in meinem video
in mysql gibt es dafür ein cursor
hab ich jaa
also diese zeile hab ich aber nicht in meinem video :D
naja der cursor = hab ich eigenltich als kommentar
jaja :D
grundsätlich hab ich diese code fast 1:1 von dir tibue
async with sql.execute(f"""SELECT * FROM UserConfig"""
) as cursor:
feedback = await cursor.fetchall()
for results in feedback:
print(results)
return
ich hab ja langsam vorangetastet. dank partyman erklärung hab ich jetzt verstanden das button auch direkt in slash command geht anstatt clasen
geht schon, würde ich aber nicht empfehlen
zumindest bekomme ich den message.conntent
xD
und den button als bestättigen
oder den button als callback variable von slash befehle zu bekommen wurde leider mir noch nicht gezeigt, sonst hätte ich so gemacht
wie kann ich abfragen ob eine nachricht ein bestimmtes wort enthält?
if "Keks" in message.content
message.conntent
zb ```py
if message.content.startswith(f'dein text') and message.content.endswith('deine ende xD'):
oder py if message.content in ['SELECT', 'CREATE']:
ehm, das ist ziemlich umständlich.
wenn besser geht gerne :3
das funktioniert aber nicht so
["test, idk"]
Timo hat es schon richtig geschrieben
also geht nicht mit einer liste
['wort1', 'wort2']
bei mir funktioniert so einwand frei, versteh den unterschied nicht
.
wie umständlich???
TypeError: 'in <string>' requires string as left operand, not list
wait
xD
jaja umständlich xD
Ignoring exception in view <View timeout=180.0 children=2> for item <Button style=<ButtonStyle.success: 3> url=None disabled=False label='bestättigen' emoji=<PartialEmoji animated=False name='checkmark' id=1034804861021204510> row=None>:
Traceback (most recent call last):
File "C:\Users\Manuel Berchtold\AppData\Local\Programs\Python\Python310\lib\site-packages\discord\ui\view.py", line 396, in _scheduled_task
await item.callback(interaction)
File "c:\Users\Manuel Berchtold\OneDrive - Kantonale Schule für Berufsbildung\Dokumente\Python\ShrioLaplaceBot\ShiroSystem\cogs\OwnerCommand.py", line 89, in button_callback_confirm
if ['SELECT', 'CREATE'] in message.content:
TypeError: 'in <string>' requires string as left operand, not list
hab so geändert wie du gesagt hast
lol
als tulpe geht es so nicht
du musst es leider zirka so machen
if 'SELECT' and 'CREATE' in message.conntent
fabian hat recht, deine lösung war relativ umständlich
genauere erklärung
das ist nicht ganz richtig. ich würde empfehlen, die worte mit einer for schleife durchzugehen und es für jedes wort so zu prüfen: if "wort" in message.content
ah stimmt
hmm wie würde das dann am besten aussehen?
x = ['SELECT', 'CREATE']
for x in message.content:
so etwa
x ist eine variable da kannst du rein tun was du willst
das ist wieder nicht ganz richtig
Ist jetzt wieder im Tupel
x = ['Wort1', 'Wort2']
for word in x:
if word in message.content:
...
Oha, jetzt hat es bei mir aber gezündet.
ahh
danke
miau
ist das nicht auch umstänglich?
verstehe den unterschied nicht bei mir funktioniert beides gut
Ne
Du speicherst das jetzt in 2 variablen, wenn ich das korrekt interpretiert habe.
schau dir nochmal genau an, wie der "in" operator funktioniert
IN ist doch drinn?
Hmm bei mir funktioniert das Callback nicht.
code:
import discord
from discord.ext import commands
from discord.commands import slash_command
class Modal(commands.Cog):
def __init__(self, bot):
self.bot = bot
@slash_command()
async def modal(self, ctx):
modal = TutorialModal(title="Erstelle ein Embed")
await ctx.send_modal(modal)
def setup(bot):
bot.add_cog(Modal(bot))
class TutorialModal(discord.ui.Modal):
def __init__(self, *args, **kwargs):
super().__init__(
discord.ui.InputText(
label="Embed Titel",
placeholder="Placeholder"
),
discord.ui.InputText(
label="Embed Beschreibung",
placeholder="Placeholder",
style=discord.InputTextStyle.long
),
*args,
**kwargs
)
async def callback(self, interaction):
embed = discord.Embed(
title=self.children[0].value,
description=self.children[1].value,
color=discord.Color.green()
)
await interaction.response.send_message(embed=embed)
es kommen auch keine errors
nur das
dein callback ist wahrscheinlich zu weit nach rechts eingerückt
Wegen der Einrückung wird das nicht erkannt.
hat funktioniert thx
ich hab keine ahnung
Was ist der fehler code?
Das sieht falsch formatiert aus
Achso du musst auch self benutzen, wenn du es in einer class hast
Hmm error bei callback:
C:\Users\Georgi\AppData\Local\Programs\Python\Python310\python.exe "C:\Users\Georgi\PycharmProjects\py-cord projekt eucord ai\main.py"
ΞUROPΞ CORD ΛI#2725 ist online
Ignoring exception in view <TutorialView timeout=180.0 children=1> for item <Button style=<ButtonStyle.secondary: 2> url=None disabled=False label='Klicke hier' emoji=None row=None>:
Traceback (most recent call last):
File "C:\Users\Georgi\AppData\Local\Programs\Python\Python310\lib\site-packages\discord\ui\view.py", line 414, in _scheduled_task
await item.callback(interaction)
File "C:\Users\Georgi\PycharmProjects\py-cord projekt eucord ai\cogs\modal.py", line 52, in button_callback
await interaction.response.send_modal(TutorialModal("Erstelle ein Embed"))
File "C:\Users\Georgi\PycharmProjects\py-cord projekt eucord ai\cogs\modal.py", line 26, in __init__
super().__init__(
TypeError: Modal.__init__() missing 1 required keyword-only argument: 'title'```
code: ```py
import discord
from discord.ext import commands
from discord.commands import slash_command
class Modal(commands.Cog):
def init(self, bot):
self.bot = bot
@slash_command()
async def modal(self, ctx):
modal = TutorialModal(title="Erstelle ein Embed")
await ctx.send_modal(modal)
@slash_command()
async def button_modal(self, ctx):
await ctx.respond("Hey", view=TutorialView())
def setup(bot):
bot.add_cog(Modal(bot))
class TutorialModal(discord.ui.Modal):
def init(self, *args, **kwargs):
super().init(
discord.ui.InputText(
label="Embed Titel",
placeholder="Placeholder"
),
discord.ui.InputText(
label="Embed Beschreibung",
placeholder="Placeholder",
style=discord.InputTextStyle.long
),
*args,
**kwargs
)
async def callback(self, interaction):
embed = discord.Embed(
title=self.children[0].value,
description=self.children[1].value,
color=discord.Color.green()
)
await interaction.response.send_message(embed=embed)
class TutorialView(discord.ui.View):
@discord.ui.button(label="Klicke hier")
async def button_callback(self,button,interaction):
await interaction.response.send_modal(TutorialModal("Erstelle ein Embed"))```
beim button fehlt das title= vor "Erstelle ein Embed"
thx
ist es möglich bestimmte rollen von dem command cooldown auszuschließen?
ja
wie?
ich glaube so bin mir aber nicht sicher: py @commands.has_role("Role name")
Was könnte der Grund sein das mir der Bot keine Zahl sagt?
es gibt keinen error
Mh
from discord.ext import commands
from discord.commands import slash_command
class Base(commands.Cog):
def __init__(self, bot):
self.bot = bot
@slash_command()
async def wait(self, ctx):
await ctx.respond("Gib eine Zahl ein!")
answer = await self.bot.wait_for("message")
await answer.reply(f"Du hast die Zahl {answer.content} eingegeben.")
def setup(bot):
bot.add_cog(Base(bot))
ich bin noch nicht so weit haha
Kann mir jemand sagen wie ich eine private Naricht mit dem bot schicken kann von User.id
ich glaube member.send oder so
ty
Es steht Line Main 179
Member_descriptor ist nicht definiert, also du musst den member definieren, damit man diesen dann auch mention kann
ne interaction war groß geschreiben
beachtet bitte nicht das a dort. Kann mir wer sagen wie ich mit der If funktion checken kann ob der interaction.user eine bestimmte rolle hats
@fickle creek weißt du myb wie das geht
bist ja der pröööööffffffffffiiiiiiiiiii
@solid ingot
:
Ich würde gerne in SQL mithilfe eines Commands eine neue Tabelle anlegen, die jedoch den Namen des Servers hat. Ist das möglich?
joa sollte möglich sein

beispiel
ServerName = Den server name
await db.execute(f"""CREATE TABLE IF NOT EXISTS {ServerName}(
UserID INTEGER PRIMARY KEY,
UserPremium BOOLEAN DEFAULT False,
UserLangue TEXT,
ChannelF_or_7DSGC_Newsletter_BOOLEAN BOOLEAN DEFAULT False
)
"""
)
so kannst du es vorstellen
Ah ok, hatte versucht es mit einem ? zu ersetzen. Aber das ist ja noch simpler!
xD
ich hab immer mit f gearbeitet
es geht sogar besser meine meinung nach als ?
kann mir jemand helfen mit eine liste als embed zu schicken:
ColumnList = ['UserID', 'UserPremium', 'UserLangue', 'ChannelF_or_7DSGC_Newsletter_BOOLEAN']
UserList = [(443455971323543554, 1, None, 1), (650456829712793636, 1, None, 0)]
bin dann mal off
in eine embed field
Alles was in Columnlist ist sollte neue embed.add_field erstellen als name
und User list dann als in value aber unter einander
beispiel:
Name=UserID',
Value=
- 443455971323543554
- 650456829712793636
Zirka so
Geht leider nicht.
@slash_command()
async def enable(self, ctx):
async with aiosqlite.connect(self.DB) as db:
server_name = ctx.guild.name
await db.execute(
f'''
CREATE TABLE IF NOT EXISTS {server_name} (
user_id INTEGER PRIMARY KEY,
msg_count INTEGER DEFAULT 0,
xp INTEGER DEFAULT 0
)
'''
)
await ctx.respond('Das Levelsystem wurde aktiviert!', ephemeral=True)
discord.errors.ApplicationCommandInvokeError: Application Command raised an exception: OperationalError: near "Bot": syntax error
wie kann ich schaffen so etwahttps://cdn.discordapp.com/attachments/1023879357871173674/1035705572902834256/unknown.png
nur sollte die UserID oder alle doppelte name zusammen
wie kann man abfragen ob in einer nachricht ein link ist?
eine einfache version wäre if "http" in message.content oder so etwas in der art
alternativ kannst du regex benutzen
will halt das man in einen channel nur links senden kann
und das könnte man einfach umgehen
weiß aber nicht ob das überhaupt möglich ist
oder egal whiteliste einfach links
das kann viele ursachen haben, schick mal den code
wait
class Shurtsdc44(commands.Cog):
def __init__(self, bot):
self.bot = bot
@commands.command()
@commands.guild_only()
async def hey2(self, ctx):
await ctx.message.delete()
select = Select(min_values=1, max_values=1, placeholder="Triff eine Auswahl",
options=[
discord.SelectOption(label="Esport Teams", emoji="📜", value="DEINE MOM"),
discord.SelectOption(label="Privates Teams", emoji="📣", value="DEINE VATER")
])
async def my_callback(interaction: discord.Interaction):
#member = interaction.user
#role = 996700244190445639
if "DEINE MOM" in interaction.data['values']:
await interaction.response.send_message(f'Fülle dieses Formular aus, um dich für die eSport Teams zu bewerben! https://forms.gle/oi4LPUrY8EBSCrM27', ephemeral=True),
elif "DEINE VATER" in interaction.data['values']:
await interaction.response.send_message(f'Fülle dieses Formular aus, um ein Privates Team zu erstellen! https://forms.gle/KZCjFmNC3v3DEiLX8', ephemeral=True)
select.callback = my_callback
view = View()
view.add_item(select)
em = discord.Embed(
title='Private Teams',
description=f"""**
📣blabla
)**""",
color=discord.Color.brand_red(), timestamp=ctx.message.created_at,
)
em.set_footer(text=self.bot.user.name, icon_url=self.bot.user.avatar)
#em.set_image(url="https://cdn.discordapp.com/attachments/996486487543660625/1034136377039786044/22-09-20_Banner.png")
#channel = self.bot.get_channel() # füge die Channel ID ein, wo die Ticket Nachricht mit dem Dropdown Menu geschickt werden soll
await ctx.send(embed=em, view=view)
komisch das ging und auf einmal geht es net mehr
Hab die Ursache gefunden, sobald ich den bot restarte kommt diese Nachricht wie kann ich das beheben?
welche nachricht?
diese @solid ingot
hm schwierig, das ist keine fehlermeldung, sondern nur eine allgemeine nachricht dass etwas nicht funktioniert hat
bin gerade sehr dumm... warum geht das nicht
if message.channel.id in [(get_config('botchannel')),]:
await message.delete()
?
if message.channel.id in [(get_config('botchannel')),]:
soll da ein Komma sein, am Ende halt ,]:?
wie meinst du?
,]:
hab es weg gemacht verändert nichts
[(get_config('botchannel'))]:
das sieht halt falsch aus
``` Was macht deine get_config funktion?
ladet einfach nur eine channel id aus einer config.json file
habe auch
print(message.channel.id)
print(get_config('botchannel'))
vor dem anderen
und beide ist 1 zu 1 das selbe
Probier es mal ohne []
Weil eigentlich halt, wenn man auch z.B. eine List hat dann macht man auf nicht nochmal
list = ["a", "b"]
if a in [list]:
sondern
if a in list
Ignoring exception in on_message
Traceback (most recent call last):
File "C:\Users\xMarco\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.10_qbz5n2kfra8p0\LocalCache\local-packages\Python310\site-packages\discord\client.py", line 382, in _run_event
await coro(*args, **kwargs)
File "c:\!me\documents\xMarcoy\bot\xMarcoy\cogs\on_event.py", line 23, in on_message
if message.channel.id in (get_config('botchannel')):
TypeError: 'in <string>' requires string as left operand, not int
Guck mal ob du das als string setzen kannst str()
kein error aber passiert auch nichts
Wait ist botchannel nur ein Channel oder mehrere
if message.channel.id in str(get_config('botchannel')):
await message.delete()
TypeError: 'in <string>' requires string as left operand, not int
dann mach das nochmal in einen string
in get_config('botchannel') steht
"botchannel": "985120824602292304",
wie?
str()
Meinst du in der json
TypeError: 'in <string>' requires string as left operand, not int
ja
ja
hab aber noch mehr als 10 andere commands die funktionieren
also kann mir nicht vorstellen das es daran liegt
# imports
import discord, json
from discord.ext import commands
from discord.commands import slash_command
#load config.json
def get_config(name):
with open("config.json", "r") as f:
json_file = json.load(f)
return json_file[name]
class on_event(commands.Cog):
def __init__(self, bot):
self.bot = bot
@commands.Cog.listener()
async def on_message(self, message):
print(message.channel.id)
print(get_config('botchannel'))
if message.channel.id in str((get_config('botchannel'))):
await message.delete()
def setup(bot):
bot.add_cog(on_event(bot))
chso
beides error
def get_config(name):
with open("condig.json", "r") as f:
json_file = json.load(f)
return json_file[str(name)]
?
Ist name der Bot channel?
wie meinst du?
achsooooo
Obwohl warte irgendwie
def channels(channel_id):
channel_ids = get_config()
if str(channel_id) in channel_ids:
return True
else:
print("asas")
def get_config():
with open("config.json", "r") as f:
channel_ids = json.load(f)
return channel_ids
Also wir öffnen die json und geben alls channel ids aus und dann überprüfen wir ob die channel_id halt da drin ist.
und was bringt das?
def get_config():
with open("config.json", "r") as f:
channel_ids = json.load(f)
return channel_ids
def channels():
channel_ids = get_config()
if str(message.channel.id) in channel_ids:
return True
else:
print("asas")
Also du hast halt return json_file[name] ausgegeben, ohne das du es nutzt und mit dem command benutzt man das halt dann
habe doch die channel id der message und eine channel id eines bot channels und will überprüfen ob beides der selbe integer ist
habe es aber 1 zu 1 bei vielen command wo es überall funktioniert
Interessant
Kannst du deine json zeigen
was da drin ist, sollte ja net so viel sein wenn da nur der bot channel ist
mit (get_config('botchannel'))
lade ich ja nur den str von "botchannel"
Ist das in {} ?
ja
wie gesagt benutze das ja bei mehreren sachen + der str wird ja geladen
also z.b.
durch (get_config('botchannel')) wird ja 985120824602292304 geladen also kann doch gar nicht daran liegen oder nicht
Mach mal ```py
str(message.channel.id) in (get_config('botchannel'))):
await message.delete()
Achso ich dachte die id wäre ein int
F 45min
F
Aber wie kann das sein, dass jz schon 45min vergangen sind, was ist mit der Zeit los
idk
ffsdfsadfisadjfisadjfiosdhfwiaeohfsdiofhsd
muss es ja verstehen
Also in deiner json ist die bot id ein string, aber die message id ist als int definiert, deswegen weilt das nicht das gleiche ist, ist auch nichts passiert
ahh aber warum verändert das was ist doch letztendlich beides 985120824602292304 oder nicht
aber egal vielen dank
hat zwar bisschen gedauert wegen fehl kommunikation aber kann man nichts machen
Ne also wenn etwas int ist ist es eine Zahl sag ich mal und string ein "Wort"
ah ok
hast du noch zeit?
Joa wenn es schnell get
ok alles gut war der selbe fehler
keine ahnung warum aber discord.Member.unban funktioniert bei mir nicht weiß jemand woran das liegen kann?
da brauchen wir schon mehr Infos um dir zu helfen, zB die fehlermeldung oder eine Beschreibung was genau nicht funktioniert
gibt keine fehlermeldung habe zuvor einen ban command gemacht der ging problemlos habe den code kopiert und die texte und so verändert und es von member.ban() zu member.unban() geändert sobald ich await member.unban entferne funktioniert der restliche code respond und so
code:
@slash_command()
async def unban(self, ctx,
member: Option(discord.Member, required = True),
reason: Option(str, required = False),
):
logchannel = await self.bot.fetch_channel((get_config('modlogchannel'))) # logchannel id
mod_embed = discord.Embed(
color=0x03fc49, # embed color
timestamp=discord.utils.utcnow() # embed timestamp
)
mod_embed.add_field(
name=f"{member} was unbanned", # embed name
value=f">>> Reason: **{reason}** \n banned from: **{ctx.author}** ( **{ctx.author.mention}** )" # embed value
)
mod_embed.set_footer(text=f"{ctx.author}", icon_url=f"{ctx.author.avatar.url}")
await logchannel.send(embed=mod_embed)
await member.unban()
await ctx.respond(embed=mod_embed, ephemeral=True)
weißt du woran das liegen kann?
leider nicht
Ich hab mir hier nen discord log erstellt. Jedes mal wenn jemand ne Nachricht löscht, nen channel erstellt oder löscht, etc. dann werden in nem Channel Nachrichten gepostet. Zum einen funktioniert das on_message_edit nicht richtig weil es ausgelöst wird, sobald allgemein eine Nachricht gelöscht wurde. Jedoch steht dort dann auch nicht die alte Nachricht drin die bearbeitet wurde, es sei denn es wurde vom Bot selbst verfasst. Zudem wollte ich wissen, ob es ein Event gibt, dass Leute einem Voice Channel beitrete, dass das auch gepostet wird
für das voice event kannst du on_voice_state_update benutzen
wieso das on_message_edit event nicht funktioniert kann ich nicht genau sagen. hast du den message content intent aktiviert?
Ne hab ich nicht. Daran könnte es liegen
wie kann man bei
async def on_guild_channel_create(self, channel)
abfragen von wem der channel erstellt wurde?
Das geht glaube ich net
hmm ok
Hier kann man sonst alle Infos aus dem Audit Log bekommen, falls dir was hilft: https://stackoverflow.com/questions/61027352/discord-py-how-to-get-the-list-of-all-the-audit-logs
weißt du ob man abfragen kann was für channel type der channel ist?
Meinst du voice channel oder text channel?
ja
Ich glaube so ging das:
if type(channel2) != discord.channel.TextChannel:
Also halt je nachdem was du machen willst
habs ausprobiert geht einfach mit channel.type
Ja ok oder auch so
Ist das eigendlich möglich den bot über einen command neu zu starten ?
Wenn ja, ist das sinnvoll?
So müsste man nicht immer erst mit SSH verbinden beim Server
möglich ist es auf jeden fall, ich denke es kann durchaus sinnvoll sein
hab aber noch nie einen restart command gemacht
Ich weiß, dass dieser Channel dazu gedacht ist Hilfe zu bekommen, aber wäre es nicht schlauer z.B. erst auf google nachzuschauen und dann wenn niemand das gleiche Problem hatte bzw. wenn man es nicht verstanden hat kann man hier her kommen. Weil eine Schulaufgabe versucht man ja auch erst selber und dann fragt man den Lehrer
kann man bei
async def on_message_delete(self, message,):
abfrage von wem die nachricht gelöscht wurde?
dafür müsstest du auf den audit log zugreifen
alles klar danke
Muss das nicht discord.User sein?

