Wort aus dem Befehl als Variable setzen

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
FGBxRamel
User
Beiträge: 2
Registriert: Dienstag 12. Mai 2020, 12:08

Hallo Leute,
ich bin ziemlich neu in Python und programmiere einen kleinen Discord Bot. Folgenden Code habe ich:

Code: Alles auswählen

import discord
import logging

#Alles was ich brauche importieren
logger = logging.getLogger('discord')
logger.setLevel(logging.DEBUG)
handler = logging.FileHandler(filename='GIRBot.log', encoding='utf-8', mode='w')
handler.setFormatter(logging.Formatter('%(asctime)s:%(levelname)s:%(name)s: %(message)s'))
logger.addHandler(handler)
#Eine Logfile erstellen zum Debuggen wenn nötig
client = discord.Client()
#Variable "client" für "discord.Client()" setzen

@client.event
async def on_connect():
    print('Wir sind jetzt als {0.user} verbunden!'.format(client)) 
#Sobald der Bot mit den DC Servern verbunden ist, wird eine Nachricht ausgegeben
@client.event
async def on_ready():
    print('Wir sind jetzt als {0.user} online und bereit!'.format(client)) 
#Sobald der Bot bereit ist, wird eine Nachricht ausgegeben
@client.event
async def on_message(message):
    if message.author == client.user:
        return
#Er checkt alle DC Textkanäle auf Nachrichten, wenn die Nachricht vom Bot (client.user) kommt wird die Nachricht ignoriert
    if message.content.startswith('$test'):
        await message.channel.send('Der Test hat funktioniert!')
#Wenn die Nachricht mit $test startet schreibt er "Der Test hat funktioniert!" in den selben Channel
@client.event
async def on_message(message):
    if message.author == client.user:
	    return
    
    if message.content.startswith('$trick'):
        await message.channel.send('Auch der zweite Test hat erfolgreich geklappt!')
		
client.run('Der Token (nicht inbegriffen da nicht benötig)')
#Er logt sich mit dem DC Token ein
Wie kann ich es jetzt coden das man in Discord z.B. eingibt "$tasks Peter" und der Bot dann "Peter" auf die Variable "name" setzt (name = Peter)? Dies soll natürlich mit allen anderen Namen auch gehen.
Vielen Dank schonmal im Vorraus^^
FGBxRamel
User
Beiträge: 2
Registriert: Dienstag 12. Mai 2020, 12:08

Ich habe das Problem gerade selbst gelöst, aber trotzdem danke^^
Benutzeravatar
__blackjack__
User
Beiträge: 14052
Registriert: Samstag 2. Juni 2018, 10:21
Wohnort: 127.0.0.1
Kontaktdaten:

@FGBxRamel: Die Kombination aus fehlenden Leerzeolen, nicht eingerückten Kommentaren, und das Du Kommentare in Zeilen *nach* dem Code den sie kommentieren schreibst, macht das schwer lesbar. Kommentare gehören *vor* die Zeilen auf die sie sich beziehen. Das habe ich speziell in Python nocht nie anders herum gesehen, es ist aber auch allgemein bei anderen Programmiersprachen üblich die Kommentare vor den kommentierten Code zu setzen.

Es sind aber auch zu viele Kommentare. Faustregel: Nicht kommentieren *was* der Code macht, denn das steht da ja bereits als Code, sondern warum der Code das so macht. Sofern das nicht offensichtlich ist. Wobei das was in der Dokumentation der Programmiersprache und den verwendeten Bibliotheken als offensichtlich zählt, denn sonst würde man bei jedem Programm noch mal Teile der Dokumentation in Kommentare schreiben.

Code: Alles auswählen

#!/usr/bin/env python3
import logging

import discord

logger = logging.getLogger("discord")
logger.setLevel(logging.DEBUG)
handler = logging.FileHandler("GIRBot.log", "w", "utf-8")
handler.setFormatter(
    logging.Formatter("%(asctime)s:%(levelname)s:%(name)s: %(message)s")
)
logger.addHandler(handler)


client = discord.Client()


@client.event
async def on_connect():
    print(f"Wir sind jetzt als {client.user} verbunden!")


@client.event
async def on_ready():
    print(f"Wir sind jetzt als {client.user} online und bereit!")


@client.event
async def on_message(message):
    if message.author == client.user:
        return

    if message.content.startswith("$test"):
        await message.channel.send("Der Test hat funktioniert!")
    elif message.content.startswith("$trick"):
        await message.channel.send(
            "Auch der zweite Test hat erfolgreich geklappt!"
        )


client.run("Der Token (nicht inbegriffen da nicht benötig)")
“Vir, intelligence has nothing to do with politics!” — Londo Mollari
Antworten