Discord Bot

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
Mehrwegbrezel
User
Beiträge: 1
Registriert: Sonntag 10. November 2024, 20:34

Ich habe vor einiger Zeit einen Discord Bot geschrieben, der meinen Server Managen soll. Nun habe ich das Problem das die programmierten Textbefehle nicht mehr durchgehen. Ich bekomme diesbezüglich auch keine Fehlermeldung in der Konsole. Die programmierten Logging Funktionen hingegen laufen ohne Probleme. Kann mir diesbezüglich eventuell jemand weiter helfen?

Anbei der Code , der aktuelle Hoster ist Pebblehost.com


https://docs.google.com/document/d/1qlb ... sp=sharing
imonbln
User
Beiträge: 191
Registriert: Freitag 3. Dezember 2021, 17:07

Ich schlage vor das du dein Problem auf eine minimal Beispiel zusammen streichst.

Niemand hat viel Lust 58 Seiten Quelltext, in einen Word like Dokument zu lesen.

Generell Stimmt was mit dein Exception Handling, ab Seite 29 ff nicht. Du fängst mit den Try alle Exceptions auf verschiedenen eben und dann ignorierst du diese, mit pass. Vermutlich wird mindestens eine der Exceptions die du unterdrückst ausgelöst. Aber bei dieser Wall of Text habe ich keine Lust da tiefer einzusteigen um zu raten was schiefgehen kann. Idealerweise fängst du mal zu loggen an was für Exceptions so passieren. Ich bin sicher, dann hast du zumindest einen Anfang dein Problem weiter einzukreisen.
Benutzeravatar
__blackjack__
User
Beiträge: 14047
Registriert: Samstag 2. Juni 2018, 10:21
Wohnort: 127.0.0.1
Kontaktdaten:

@Mehrwegbrezel: Eine Quelltext mit mehr als 4.000 Zeilen als Textverarbeitungsdokument mit 58 DIN A4-Seiten. Habe ich in der Form auch noch nicht gesehen. 🤔

Ein Modul sollte keine 201 ``pass``-Anweisungen enthalten. Da sind die ignorierten Ausnahmen, die imonbln angesprochen hat, ja auch mit enthalten.

Ich habe da mal ein kleines Analyseprogramm für ``pass`` und nackte ``except`` zusammengehackt:

Code: Alles auswählen

#!/usr/bin/env python3
import ast
from collections import Counter
from pathlib import Path


def is_just_pass(nodes):
    return len(nodes) == 1 and isinstance(nodes[0], ast.Pass)


class Analyser(ast.NodeVisitor):
    def __init__(self):
        ast.NodeVisitor.__init__(self)
        self.checked_pass_nodes = set()
        self.results = []

    def visit_Try(self, node):
        for handler_node in node.handlers:
            messages = []

            if not handler_node.type:
                messages.append("except ohne konkrete Ausnahme(n)")

            if is_just_pass(handler_node.body) and not (
                node.orelse or node.finalbody
            ):
                self.checked_pass_nodes.add(handler_node.body[0])
                messages.append("Ausnahmebehandlung durch reines ignorieren")

            if messages:
                self.results.append((handler_node, messages))

        self.generic_visit(node)

    def visit_If(self, node):
        messages = []

        if is_just_pass(node.body):
            self.checked_pass_nodes.add(node.body[0])
            messages.append("unnötiger if-Zweig")

        if is_just_pass(node.orelse):
            self.checked_pass_nodes.add(node.orelse[0])
            messages.append("unnötiger else-Zweig")

        if messages:
            self.results.append((node, messages))

        self.generic_visit(node)

    def visit_Pass(self, node):
        assert node in self.checked_pass_nodes
        self.generic_visit(node)


def main():
    source_file_path = Path("discord_bot.py")
    analyser = Analyser()
    analyser.visit(ast.parse(source_file_path.read_text(encoding="utf-8")))

    message_to_count = Counter()
    for node, messages in analyser.results:
        print(
            (
                f"{source_file_path}:{node.lineno}:{node.col_offset}"
                f" {type(node).__name__}:"
            ),
            ", ".join(messages),
        )
        message_to_count.update(messages)

    print(len(analyser.checked_pass_nodes), "pass Anweisungen überprüft.")
    for message, count in message_to_count.most_common():
        print(f"{count:>5} × {message}")


if __name__ == "__main__":
    main()
Zusammenfassung des Ergebnis:

Code: Alles auswählen

201 pass Anweisungen überprüft.
  168 × except ohne konkrete Ausnahme(n)
  162 × Ausnahmebehandlung durch reines ignorieren
   38 × unnötiger else-Zweig
    1 × unnötiger if-Zweig
Komplettes Ergebnis, welches man durchgehen und abarbeiten sollte:

Code: Alles auswählen

discord_bot.py:1135:12 ExceptHandler: except ohne konkrete Ausnahme(n), Ausnahmebehandlung durch reines ignorieren
discord_bot.py:1174:12 ExceptHandler: except ohne konkrete Ausnahme(n), Ausnahmebehandlung durch reines ignorieren
discord_bot.py:1207:12 ExceptHandler: except ohne konkrete Ausnahme(n), Ausnahmebehandlung durch reines ignorieren
discord_bot.py:1468:12 ExceptHandler: except ohne konkrete Ausnahme(n), Ausnahmebehandlung durch reines ignorieren
discord_bot.py:1464:20 ExceptHandler: except ohne konkrete Ausnahme(n), Ausnahmebehandlung durch reines ignorieren
discord_bot.py:1462:28 ExceptHandler: except ohne konkrete Ausnahme(n), Ausnahmebehandlung durch reines ignorieren
discord_bot.py:1460:36 ExceptHandler: except ohne konkrete Ausnahme(n), Ausnahmebehandlung durch reines ignorieren
discord_bot.py:1458:44 ExceptHandler: except ohne konkrete Ausnahme(n), Ausnahmebehandlung durch reines ignorieren
discord_bot.py:1456:52 ExceptHandler: except ohne konkrete Ausnahme(n), Ausnahmebehandlung durch reines ignorieren
discord_bot.py:1454:60 ExceptHandler: except ohne konkrete Ausnahme(n), Ausnahmebehandlung durch reines ignorieren
discord_bot.py:1626:12 ExceptHandler: except ohne konkrete Ausnahme(n)
discord_bot.py:1635:12 ExceptHandler: except ohne konkrete Ausnahme(n)
discord_bot.py:1645:12 ExceptHandler: except ohne konkrete Ausnahme(n)
discord_bot.py:1651:12 ExceptHandler: except ohne konkrete Ausnahme(n)
discord_bot.py:1654:16 ExceptHandler: except ohne konkrete Ausnahme(n)
discord_bot.py:1657:20 ExceptHandler: except ohne konkrete Ausnahme(n)
discord_bot.py:1706:12 ExceptHandler: except ohne konkrete Ausnahme(n), Ausnahmebehandlung durch reines ignorieren
discord_bot.py:1720:12 ExceptHandler: except ohne konkrete Ausnahme(n), Ausnahmebehandlung durch reines ignorieren
discord_bot.py:1758:12 ExceptHandler: except ohne konkrete Ausnahme(n), Ausnahmebehandlung durch reines ignorieren
discord_bot.py:1825:12 ExceptHandler: except ohne konkrete Ausnahme(n), Ausnahmebehandlung durch reines ignorieren
discord_bot.py:1822:16 ExceptHandler: except ohne konkrete Ausnahme(n), Ausnahmebehandlung durch reines ignorieren
discord_bot.py:1819:20 ExceptHandler: except ohne konkrete Ausnahme(n), Ausnahmebehandlung durch reines ignorieren
discord_bot.py:1815:24 ExceptHandler: except ohne konkrete Ausnahme(n), Ausnahmebehandlung durch reines ignorieren
discord_bot.py:1811:28 ExceptHandler: except ohne konkrete Ausnahme(n), Ausnahmebehandlung durch reines ignorieren
discord_bot.py:1902:12 ExceptHandler: except ohne konkrete Ausnahme(n), Ausnahmebehandlung durch reines ignorieren
discord_bot.py:1899:16 ExceptHandler: except ohne konkrete Ausnahme(n), Ausnahmebehandlung durch reines ignorieren
discord_bot.py:1896:20 ExceptHandler: except ohne konkrete Ausnahme(n), Ausnahmebehandlung durch reines ignorieren
discord_bot.py:1893:24 ExceptHandler: except ohne konkrete Ausnahme(n), Ausnahmebehandlung durch reines ignorieren
discord_bot.py:1889:28 ExceptHandler: except ohne konkrete Ausnahme(n), Ausnahmebehandlung durch reines ignorieren
discord_bot.py:1885:32 ExceptHandler: except ohne konkrete Ausnahme(n), Ausnahmebehandlung durch reines ignorieren
discord_bot.py:1995:12 ExceptHandler: except ohne konkrete Ausnahme(n), Ausnahmebehandlung durch reines ignorieren
discord_bot.py:1992:16 ExceptHandler: except ohne konkrete Ausnahme(n), Ausnahmebehandlung durch reines ignorieren
discord_bot.py:1988:20 ExceptHandler: except ohne konkrete Ausnahme(n), Ausnahmebehandlung durch reines ignorieren
discord_bot.py:1984:24 ExceptHandler: except ohne konkrete Ausnahme(n), Ausnahmebehandlung durch reines ignorieren
discord_bot.py:1980:28 ExceptHandler: except ohne konkrete Ausnahme(n), Ausnahmebehandlung durch reines ignorieren
discord_bot.py:1976:32 ExceptHandler: except ohne konkrete Ausnahme(n), Ausnahmebehandlung durch reines ignorieren
discord_bot.py:1972:36 ExceptHandler: except ohne konkrete Ausnahme(n), Ausnahmebehandlung durch reines ignorieren
discord_bot.py:2082:12 ExceptHandler: except ohne konkrete Ausnahme(n), Ausnahmebehandlung durch reines ignorieren
discord_bot.py:2079:16 ExceptHandler: except ohne konkrete Ausnahme(n), Ausnahmebehandlung durch reines ignorieren
discord_bot.py:2075:20 ExceptHandler: except ohne konkrete Ausnahme(n), Ausnahmebehandlung durch reines ignorieren
discord_bot.py:2071:24 ExceptHandler: except ohne konkrete Ausnahme(n), Ausnahmebehandlung durch reines ignorieren
discord_bot.py:2067:28 ExceptHandler: except ohne konkrete Ausnahme(n), Ausnahmebehandlung durch reines ignorieren
discord_bot.py:2063:32 ExceptHandler: except ohne konkrete Ausnahme(n), Ausnahmebehandlung durch reines ignorieren
discord_bot.py:2164:12 ExceptHandler: except ohne konkrete Ausnahme(n), Ausnahmebehandlung durch reines ignorieren
discord_bot.py:2161:16 ExceptHandler: except ohne konkrete Ausnahme(n), Ausnahmebehandlung durch reines ignorieren
discord_bot.py:2157:20 ExceptHandler: except ohne konkrete Ausnahme(n), Ausnahmebehandlung durch reines ignorieren
discord_bot.py:2154:24 ExceptHandler: except ohne konkrete Ausnahme(n), Ausnahmebehandlung durch reines ignorieren
discord_bot.py:2150:28 ExceptHandler: except ohne konkrete Ausnahme(n), Ausnahmebehandlung durch reines ignorieren
discord_bot.py:2148:32 ExceptHandler: except ohne konkrete Ausnahme(n), Ausnahmebehandlung durch reines ignorieren
discord_bot.py:2210:12 ExceptHandler: except ohne konkrete Ausnahme(n), Ausnahmebehandlung durch reines ignorieren
discord_bot.py:2207:16 ExceptHandler: except ohne konkrete Ausnahme(n), Ausnahmebehandlung durch reines ignorieren
discord_bot.py:2203:20 ExceptHandler: except ohne konkrete Ausnahme(n), Ausnahmebehandlung durch reines ignorieren
discord_bot.py:2256:12 ExceptHandler: except ohne konkrete Ausnahme(n), Ausnahmebehandlung durch reines ignorieren
discord_bot.py:2253:16 ExceptHandler: except ohne konkrete Ausnahme(n), Ausnahmebehandlung durch reines ignorieren
discord_bot.py:2249:20 ExceptHandler: except ohne konkrete Ausnahme(n), Ausnahmebehandlung durch reines ignorieren
discord_bot.py:2335:12 ExceptHandler: except ohne konkrete Ausnahme(n), Ausnahmebehandlung durch reines ignorieren
discord_bot.py:2332:16 ExceptHandler: except ohne konkrete Ausnahme(n), Ausnahmebehandlung durch reines ignorieren
discord_bot.py:2328:20 ExceptHandler: except ohne konkrete Ausnahme(n), Ausnahmebehandlung durch reines ignorieren
discord_bot.py:2325:24 ExceptHandler: except ohne konkrete Ausnahme(n), Ausnahmebehandlung durch reines ignorieren
discord_bot.py:2322:28 ExceptHandler: except ohne konkrete Ausnahme(n), Ausnahmebehandlung durch reines ignorieren
discord_bot.py:2318:32 ExceptHandler: except ohne konkrete Ausnahme(n), Ausnahmebehandlung durch reines ignorieren
discord_bot.py:2381:12 ExceptHandler: except ohne konkrete Ausnahme(n), Ausnahmebehandlung durch reines ignorieren
discord_bot.py:2378:16 ExceptHandler: except ohne konkrete Ausnahme(n), Ausnahmebehandlung durch reines ignorieren
discord_bot.py:2374:20 ExceptHandler: except ohne konkrete Ausnahme(n), Ausnahmebehandlung durch reines ignorieren
discord_bot.py:2431:12 ExceptHandler: except ohne konkrete Ausnahme(n), Ausnahmebehandlung durch reines ignorieren
discord_bot.py:2428:16 ExceptHandler: except ohne konkrete Ausnahme(n), Ausnahmebehandlung durch reines ignorieren
discord_bot.py:2425:20 ExceptHandler: except ohne konkrete Ausnahme(n), Ausnahmebehandlung durch reines ignorieren
discord_bot.py:2423:24 ExceptHandler: except ohne konkrete Ausnahme(n), Ausnahmebehandlung durch reines ignorieren
discord_bot.py:2577:12 ExceptHandler: except ohne konkrete Ausnahme(n), Ausnahmebehandlung durch reines ignorieren
discord_bot.py:2574:16 ExceptHandler: except ohne konkrete Ausnahme(n), Ausnahmebehandlung durch reines ignorieren
discord_bot.py:2570:20 ExceptHandler: except ohne konkrete Ausnahme(n), Ausnahmebehandlung durch reines ignorieren
discord_bot.py:2566:24 ExceptHandler: except ohne konkrete Ausnahme(n), Ausnahmebehandlung durch reines ignorieren
discord_bot.py:2562:28 ExceptHandler: except ohne konkrete Ausnahme(n), Ausnahmebehandlung durch reines ignorieren
discord_bot.py:2558:32 ExceptHandler: except ohne konkrete Ausnahme(n), Ausnahmebehandlung durch reines ignorieren
discord_bot.py:2554:36 ExceptHandler: except ohne konkrete Ausnahme(n), Ausnahmebehandlung durch reines ignorieren
discord_bot.py:2550:40 ExceptHandler: except ohne konkrete Ausnahme(n), Ausnahmebehandlung durch reines ignorieren
discord_bot.py:2546:44 ExceptHandler: except ohne konkrete Ausnahme(n), Ausnahmebehandlung durch reines ignorieren
discord_bot.py:2542:48 ExceptHandler: except ohne konkrete Ausnahme(n), Ausnahmebehandlung durch reines ignorieren
discord_bot.py:2538:52 ExceptHandler: except ohne konkrete Ausnahme(n), Ausnahmebehandlung durch reines ignorieren
discord_bot.py:2535:56 ExceptHandler: except ohne konkrete Ausnahme(n), Ausnahmebehandlung durch reines ignorieren
discord_bot.py:2637:12 ExceptHandler: except ohne konkrete Ausnahme(n), Ausnahmebehandlung durch reines ignorieren
discord_bot.py:2634:16 ExceptHandler: except ohne konkrete Ausnahme(n), Ausnahmebehandlung durch reines ignorieren
discord_bot.py:2630:20 ExceptHandler: except ohne konkrete Ausnahme(n), Ausnahmebehandlung durch reines ignorieren
discord_bot.py:2626:24 ExceptHandler: except ohne konkrete Ausnahme(n), Ausnahmebehandlung durch reines ignorieren
discord_bot.py:2683:12 ExceptHandler: except ohne konkrete Ausnahme(n), Ausnahmebehandlung durch reines ignorieren
discord_bot.py:2680:16 ExceptHandler: except ohne konkrete Ausnahme(n), Ausnahmebehandlung durch reines ignorieren
discord_bot.py:2676:20 ExceptHandler: except ohne konkrete Ausnahme(n), Ausnahmebehandlung durch reines ignorieren
discord_bot.py:2704:12 ExceptHandler: except ohne konkrete Ausnahme(n), Ausnahmebehandlung durch reines ignorieren
discord_bot.py:2743:12 ExceptHandler: except ohne konkrete Ausnahme(n), Ausnahmebehandlung durch reines ignorieren
discord_bot.py:2773:12 ExceptHandler: except ohne konkrete Ausnahme(n), Ausnahmebehandlung durch reines ignorieren
discord_bot.py:2801:12 ExceptHandler: except ohne konkrete Ausnahme(n), Ausnahmebehandlung durch reines ignorieren
discord_bot.py:2830:12 ExceptHandler: except ohne konkrete Ausnahme(n), Ausnahmebehandlung durch reines ignorieren
discord_bot.py:2858:12 ExceptHandler: except ohne konkrete Ausnahme(n), Ausnahmebehandlung durch reines ignorieren
discord_bot.py:2886:12 ExceptHandler: except ohne konkrete Ausnahme(n), Ausnahmebehandlung durch reines ignorieren
discord_bot.py:2969:12 ExceptHandler: except ohne konkrete Ausnahme(n), Ausnahmebehandlung durch reines ignorieren
discord_bot.py:2966:16 ExceptHandler: except ohne konkrete Ausnahme(n), Ausnahmebehandlung durch reines ignorieren
discord_bot.py:2963:20 ExceptHandler: except ohne konkrete Ausnahme(n), Ausnahmebehandlung durch reines ignorieren
discord_bot.py:2959:24 ExceptHandler: except ohne konkrete Ausnahme(n), Ausnahmebehandlung durch reines ignorieren
discord_bot.py:2955:28 ExceptHandler: except ohne konkrete Ausnahme(n), Ausnahmebehandlung durch reines ignorieren
discord_bot.py:2951:32 ExceptHandler: except ohne konkrete Ausnahme(n), Ausnahmebehandlung durch reines ignorieren
discord_bot.py:3050:12 ExceptHandler: except ohne konkrete Ausnahme(n), Ausnahmebehandlung durch reines ignorieren
discord_bot.py:3047:16 ExceptHandler: except ohne konkrete Ausnahme(n), Ausnahmebehandlung durch reines ignorieren
discord_bot.py:3044:20 ExceptHandler: except ohne konkrete Ausnahme(n), Ausnahmebehandlung durch reines ignorieren
discord_bot.py:3040:24 ExceptHandler: except ohne konkrete Ausnahme(n), Ausnahmebehandlung durch reines ignorieren
discord_bot.py:3036:28 ExceptHandler: except ohne konkrete Ausnahme(n), Ausnahmebehandlung durch reines ignorieren
discord_bot.py:3032:32 ExceptHandler: except ohne konkrete Ausnahme(n), Ausnahmebehandlung durch reines ignorieren
discord_bot.py:3131:12 ExceptHandler: except ohne konkrete Ausnahme(n), Ausnahmebehandlung durch reines ignorieren
discord_bot.py:3128:16 ExceptHandler: except ohne konkrete Ausnahme(n), Ausnahmebehandlung durch reines ignorieren
discord_bot.py:3125:20 ExceptHandler: except ohne konkrete Ausnahme(n), Ausnahmebehandlung durch reines ignorieren
discord_bot.py:3121:24 ExceptHandler: except ohne konkrete Ausnahme(n), Ausnahmebehandlung durch reines ignorieren
discord_bot.py:3117:28 ExceptHandler: except ohne konkrete Ausnahme(n), Ausnahmebehandlung durch reines ignorieren
discord_bot.py:3113:32 ExceptHandler: except ohne konkrete Ausnahme(n), Ausnahmebehandlung durch reines ignorieren
discord_bot.py:3210:12 ExceptHandler: except ohne konkrete Ausnahme(n), Ausnahmebehandlung durch reines ignorieren
discord_bot.py:3207:16 ExceptHandler: except ohne konkrete Ausnahme(n), Ausnahmebehandlung durch reines ignorieren
discord_bot.py:3204:20 ExceptHandler: except ohne konkrete Ausnahme(n), Ausnahmebehandlung durch reines ignorieren
discord_bot.py:3200:24 ExceptHandler: except ohne konkrete Ausnahme(n), Ausnahmebehandlung durch reines ignorieren
discord_bot.py:3196:28 ExceptHandler: except ohne konkrete Ausnahme(n), Ausnahmebehandlung durch reines ignorieren
discord_bot.py:3192:32 ExceptHandler: except ohne konkrete Ausnahme(n), Ausnahmebehandlung durch reines ignorieren
discord_bot.py:3235:12 ExceptHandler: except ohne konkrete Ausnahme(n), Ausnahmebehandlung durch reines ignorieren
discord_bot.py:3260:12 ExceptHandler: except ohne konkrete Ausnahme(n), Ausnahmebehandlung durch reines ignorieren
discord_bot.py:3285:12 ExceptHandler: except ohne konkrete Ausnahme(n), Ausnahmebehandlung durch reines ignorieren
discord_bot.py:3310:12 ExceptHandler: except ohne konkrete Ausnahme(n), Ausnahmebehandlung durch reines ignorieren
discord_bot.py:3335:12 ExceptHandler: except ohne konkrete Ausnahme(n), Ausnahmebehandlung durch reines ignorieren
discord_bot.py:3360:12 ExceptHandler: except ohne konkrete Ausnahme(n), Ausnahmebehandlung durch reines ignorieren
discord_bot.py:3396:12 ExceptHandler: except ohne konkrete Ausnahme(n), Ausnahmebehandlung durch reines ignorieren
discord_bot.py:3392:16 ExceptHandler: except ohne konkrete Ausnahme(n), Ausnahmebehandlung durch reines ignorieren
discord_bot.py:3421:12 ExceptHandler: except ohne konkrete Ausnahme(n), Ausnahmebehandlung durch reines ignorieren
discord_bot.py:3446:12 ExceptHandler: except ohne konkrete Ausnahme(n), Ausnahmebehandlung durch reines ignorieren
discord_bot.py:3471:12 ExceptHandler: except ohne konkrete Ausnahme(n), Ausnahmebehandlung durch reines ignorieren
discord_bot.py:3506:12 ExceptHandler: except ohne konkrete Ausnahme(n), Ausnahmebehandlung durch reines ignorieren
discord_bot.py:3503:16 ExceptHandler: except ohne konkrete Ausnahme(n), Ausnahmebehandlung durch reines ignorieren
discord_bot.py:3531:12 ExceptHandler: except ohne konkrete Ausnahme(n), Ausnahmebehandlung durch reines ignorieren
discord_bot.py:3556:12 ExceptHandler: except ohne konkrete Ausnahme(n), Ausnahmebehandlung durch reines ignorieren
discord_bot.py:3581:12 ExceptHandler: except ohne konkrete Ausnahme(n), Ausnahmebehandlung durch reines ignorieren
discord_bot.py:3606:12 ExceptHandler: except ohne konkrete Ausnahme(n), Ausnahmebehandlung durch reines ignorieren
discord_bot.py:3631:12 ExceptHandler: except ohne konkrete Ausnahme(n), Ausnahmebehandlung durch reines ignorieren
discord_bot.py:3663:4 If: unnötiger if-Zweig
discord_bot.py:3682:4 If: unnötiger else-Zweig
discord_bot.py:3687:4 If: unnötiger else-Zweig
discord_bot.py:3701:4 ExceptHandler: except ohne konkrete Ausnahme(n), Ausnahmebehandlung durch reines ignorieren
discord_bot.py:3716:4 If: unnötiger else-Zweig
discord_bot.py:3746:4 If: unnötiger else-Zweig
discord_bot.py:3754:4 If: unnötiger else-Zweig
discord_bot.py:3761:8 ExceptHandler: except ohne konkrete Ausnahme(n), Ausnahmebehandlung durch reines ignorieren
discord_bot.py:3767:4 If: unnötiger else-Zweig
discord_bot.py:3774:8 ExceptHandler: except ohne konkrete Ausnahme(n), Ausnahmebehandlung durch reines ignorieren
discord_bot.py:3779:4 If: unnötiger else-Zweig
discord_bot.py:3786:8 ExceptHandler: except ohne konkrete Ausnahme(n), Ausnahmebehandlung durch reines ignorieren
discord_bot.py:3791:4 If: unnötiger else-Zweig
discord_bot.py:3798:8 ExceptHandler: except ohne konkrete Ausnahme(n), Ausnahmebehandlung durch reines ignorieren
discord_bot.py:3803:4 If: unnötiger else-Zweig
discord_bot.py:3810:8 ExceptHandler: except ohne konkrete Ausnahme(n), Ausnahmebehandlung durch reines ignorieren
discord_bot.py:3815:4 If: unnötiger else-Zweig
discord_bot.py:3822:8 ExceptHandler: except ohne konkrete Ausnahme(n), Ausnahmebehandlung durch reines ignorieren
discord_bot.py:3827:4 If: unnötiger else-Zweig
discord_bot.py:3834:8 ExceptHandler: except ohne konkrete Ausnahme(n), Ausnahmebehandlung durch reines ignorieren
discord_bot.py:3839:4 If: unnötiger else-Zweig
discord_bot.py:3846:8 ExceptHandler: except ohne konkrete Ausnahme(n), Ausnahmebehandlung durch reines ignorieren
discord_bot.py:3851:4 If: unnötiger else-Zweig
discord_bot.py:3858:8 ExceptHandler: except ohne konkrete Ausnahme(n), Ausnahmebehandlung durch reines ignorieren
discord_bot.py:3863:4 If: unnötiger else-Zweig
discord_bot.py:3870:8 ExceptHandler: except ohne konkrete Ausnahme(n), Ausnahmebehandlung durch reines ignorieren
discord_bot.py:3875:4 If: unnötiger else-Zweig
discord_bot.py:3882:8 ExceptHandler: except ohne konkrete Ausnahme(n), Ausnahmebehandlung durch reines ignorieren
discord_bot.py:3887:4 If: unnötiger else-Zweig
discord_bot.py:3894:8 ExceptHandler: except ohne konkrete Ausnahme(n), Ausnahmebehandlung durch reines ignorieren
discord_bot.py:3899:4 If: unnötiger else-Zweig
discord_bot.py:3906:8 ExceptHandler: except ohne konkrete Ausnahme(n), Ausnahmebehandlung durch reines ignorieren
discord_bot.py:3911:4 If: unnötiger else-Zweig
discord_bot.py:3918:8 ExceptHandler: except ohne konkrete Ausnahme(n), Ausnahmebehandlung durch reines ignorieren
discord_bot.py:3923:4 If: unnötiger else-Zweig
discord_bot.py:3930:8 ExceptHandler: except ohne konkrete Ausnahme(n), Ausnahmebehandlung durch reines ignorieren
discord_bot.py:3935:4 If: unnötiger else-Zweig
discord_bot.py:3942:8 ExceptHandler: except ohne konkrete Ausnahme(n), Ausnahmebehandlung durch reines ignorieren
discord_bot.py:3947:4 If: unnötiger else-Zweig
discord_bot.py:3954:8 ExceptHandler: except ohne konkrete Ausnahme(n), Ausnahmebehandlung durch reines ignorieren
discord_bot.py:3959:4 If: unnötiger else-Zweig
discord_bot.py:3966:8 ExceptHandler: except ohne konkrete Ausnahme(n), Ausnahmebehandlung durch reines ignorieren
discord_bot.py:3971:4 If: unnötiger else-Zweig
discord_bot.py:3978:8 ExceptHandler: except ohne konkrete Ausnahme(n), Ausnahmebehandlung durch reines ignorieren
discord_bot.py:3983:4 If: unnötiger else-Zweig
discord_bot.py:3990:8 ExceptHandler: except ohne konkrete Ausnahme(n), Ausnahmebehandlung durch reines ignorieren
discord_bot.py:3995:4 If: unnötiger else-Zweig
discord_bot.py:4002:8 ExceptHandler: except ohne konkrete Ausnahme(n), Ausnahmebehandlung durch reines ignorieren
discord_bot.py:4007:4 If: unnötiger else-Zweig
discord_bot.py:4014:8 ExceptHandler: except ohne konkrete Ausnahme(n), Ausnahmebehandlung durch reines ignorieren
discord_bot.py:4019:4 If: unnötiger else-Zweig
discord_bot.py:4026:8 ExceptHandler: except ohne konkrete Ausnahme(n), Ausnahmebehandlung durch reines ignorieren
discord_bot.py:4031:4 If: unnötiger else-Zweig
discord_bot.py:4038:8 ExceptHandler: except ohne konkrete Ausnahme(n), Ausnahmebehandlung durch reines ignorieren
discord_bot.py:4043:4 If: unnötiger else-Zweig
discord_bot.py:4050:8 ExceptHandler: except ohne konkrete Ausnahme(n), Ausnahmebehandlung durch reines ignorieren
discord_bot.py:4055:4 If: unnötiger else-Zweig
discord_bot.py:4062:8 ExceptHandler: except ohne konkrete Ausnahme(n), Ausnahmebehandlung durch reines ignorieren
discord_bot.py:4067:4 If: unnötiger else-Zweig
discord_bot.py:4074:8 ExceptHandler: except ohne konkrete Ausnahme(n), Ausnahmebehandlung durch reines ignorieren
discord_bot.py:4079:4 If: unnötiger else-Zweig
discord_bot.py:4086:8 ExceptHandler: except ohne konkrete Ausnahme(n), Ausnahmebehandlung durch reines ignorieren
discord_bot.py:4091:4 If: unnötiger else-Zweig
discord_bot.py:4098:8 ExceptHandler: except ohne konkrete Ausnahme(n), Ausnahmebehandlung durch reines ignorieren
discord_bot.py:4103:4 If: unnötiger else-Zweig
discord_bot.py:4110:8 ExceptHandler: except ohne konkrete Ausnahme(n), Ausnahmebehandlung durch reines ignorieren
discord_bot.py:4116:4 If: unnötiger else-Zweig
discord_bot.py:4123:8 ExceptHandler: except ohne konkrete Ausnahme(n), Ausnahmebehandlung durch reines ignorieren
discord_bot.py:4142:4 If: unnötiger else-Zweig
discord_bot.py:4153:4 If: unnötiger else-Zweig
discord_bot.py:4164:4 If: unnötiger else-Zweig
201 pass Anweisungen überprüft.
  168 × except ohne konkrete Ausnahme(n)
  162 × Ausnahmebehandlung durch reines ignorieren
   38 × unnötiger else-Zweig
    1 × unnötiger if-Zweig
Da ist auch viel Code, der nach „kopieren, einfügen, und leicht ändern“ aussieht, der das ganze unnötig aufbläht, und überarbeitet werden sollte. Dafür gibt es Schleifen und/oder Funktionen. Ausserdem ist da so einiges was als Konstanten herausgezogen werden sollte, um Änderungen weniger fehleranfällig zu machen.

Mal als erstes Beispiel diese 80 Zeilen Code…

Code: Alles auswählen

intents = discord.Intents.default()
intents.members = True
all_intents = []
if intents.bans:
    all_intents.append("bans = True")
else:
    all_intents.append("bans = False")
if intents.dm_messages:
    all_intents.append("dm_messages = True")
else:
    all_intents.append("dm_messages = False")
if intents.dm_reactions:
    all_intents.append("dm_reactions = True")
else:
    all_intents.append("dm_reactions = False")
if intents.dm_typing:
    all_intents.append("dm_typing = True")
else:
    all_intents.append("dm_typing = False")
if intents.emojis:
    all_intents.append("emojis = True")
else:
    all_intents.append("emojis = False")
if intents.guild_messages:
    all_intents.append("guild_messages = True")
else:
    all_intents.append("guild_messages = False")
if intents.guild_reactions:
    all_intents.append("guild_reactions = True")
else:
    all_intents.append("guild_reactions = False")
if intents.guild_typing:
    all_intents.append("guild_typing = True")
else:
    all_intents.append("guild_typing = False")
if intents.guilds:
    all_intents.append("guilds = True")
else:
    all_intents.append("guilds = False")
if intents.integrations:
    all_intents.append("integrations = True")
else:
    all_intents.append("integrations = False")
if intents.invites:
    all_intents.append("invites = True")
else:
    all_intents.append("invites = False")
if intents.members:
    all_intents.append("members = True")
else:
    all_intents.append("members = False")
if intents.messages:
    all_intents.append("messages = True")
else:
    all_intents.append("messages = False")
if intents.presences:
    all_intents.append("presences = True")
else:
    all_intents.append("presences = False")
if intents.reactions:
    all_intents.append("reactions = True")
else:
    all_intents.append("reactions = False")
if intents.typing:
    all_intents.append("typing = True")
else:
    all_intents.append("typing = False")
if intents.value:
    all_intents.append("value = True")
else:
    all_intents.append("value = False")
if intents.voice_states:
    all_intents.append("voice_states = True")
else:
    all_intents.append("voice_states = False")
if intents.webhooks:
    all_intents.append("webhooks = True")
else:
    all_intents.append("webhooks = False")
print(f"Intents: {all_intents}\n")
…sind eigentlich nur vier Zeilen:

Code: Alles auswählen

intents = discord.Intents.default() | discord.Intents(members=True)
print(
    "Intents:", [f"{name} = {state}" for name, state in sorted(intents)], "\n"
)
Das gibt jetzt wirklich *alle* Intents aus, aber dafür nicht `value` was gar kein Flag ist, sondern der kombinierte Wert aller Flags als ganze Zahl.
“Vir, intelligence has nothing to do with politics!” — Londo Mollari
Benutzeravatar
Dennis89
User
Beiträge: 1550
Registriert: Freitag 11. Dezember 2020, 15:13

Hallo,

ich tue mir mal wieder mit der Dokumentation von `ast`schwer. Ich bin soweit das `parse`ein `node` - Objekt zurück gibt, aber wo ist das Objekt denn dokumentiert? Ich will wissen was `handlers` zurück gibt und dann auch was von dem zurückgegebenen Objekt `type` zurückgibt.

Bin ich schon wieder zu doof..?

Danke und Grüße
Dennis
"When I got the music, I got a place to go" [Rancid, 1993]
Benutzeravatar
__blackjack__
User
Beiträge: 14047
Registriert: Samstag 2. Juni 2018, 10:21
Wohnort: 127.0.0.1
Kontaktdaten:

Die Dokumentation der Knoten ist über der Dokumentation der `parse()`-Funktion. Gleich am Anfang der Dokumentation zu dem Modul steht das die Funktion einen Baum aus Knoten liefert, wobei alle Knoten von `AST` abgeleitet sind. Auf `handlers` wird in `visit_Try()` zugegriffen weil da `node` ein `ast.Try`-Objekt ist. In der Dokumentation zum `Try` steht dann das `handlers` eine Liste mit `ExceptHandler`-Objekten ist. Und da kann man dann nachlesen das `type` von diesen Objekten den Ausdruck beschreibt, der die Ausnahmen angibt, oder `None` falls es ein nacktes ``except:`` ist. Darauf prüft der Analyse-Code ja.
“Vir, intelligence has nothing to do with politics!” — Londo Mollari
Benutzeravatar
Dennis89
User
Beiträge: 1550
Registriert: Freitag 11. Dezember 2020, 15:13

Danke für die Hilfe.

Jetzt habe ich es auch gefunden. Ich habe zwar verstanden bzw. mir gedacht was `type` zurück gibt, aber ich versuche das immer nach zu lesen, wenn ich Code durcharbeite. Vorallem wenn der Code was macht, das neu für mich ist.

Grüße
Dennis
"When I got the music, I got a place to go" [Rancid, 1993]
Antworten