Python – die besten Beiträge

Wieso löscht ein Discord.py Bot alle Nachrichten eines Users wenn er ihn bannt?

Heyho!

Ich programmieren jetzt schon seit längerem an einen Discord Bot in Python.
Das meiste bekomme ich alleine hin, nur jetzt brauche ich dringend Hilfe!

Wenn ich den Ban Befehl in Discord ausführen möchte, wird der User zwar gebannt, aber seine gesamten Nachrichten werden gelöscht, wie bei einem Softban?
Ich versteh das irgendwie nicht... Ich bin auf vielen Servern Moderator und wenn ich dort den Ban Befehl ausführe wird nur der User gebannt und nicht seine Nachrichten gelöscht...

Was mir noch gerade einfallen ist, dass wenn ich den Clear Befehl ausführe wird die Nachricht zum Beispiel "Clear 4" gesendet, aber bei den vier Nachrichten die gelöscht werden ist der Clear Befehl auch dabei.

Ban:

@bot.command(name='ban', pass_context=True)
@has_permissions(ban_members=True)
async def ban(ctx, member: discord.Member, *, reason=None):
    await member.ban(reason=reason)
    embed = discord.Embed(description='', color=0x27ae60)
    embed.add_field(name='__**Banned**__', value=f'Der User {member.name} wurde erfolgreich gebannt!\r'
                                                 f'Grund: **{reason}**', inline=True)
    embed.set_footer(text=f'Moderator: {ctx.author.name} • {ctx.author.id}', icon_url=ctx.author.avatar_url)
    await ctx.send(embed=embed)


@ban.error
async def ban_error(ctx, error):
    if isinstance(error, commands.MissingPermissions):
        embed = discord.Embed(description=' ', color=0xc0392b)
        embed.add_field(name='__**ERROR**__', value='Du hast nicht die Berechtigungen dazu!', inline=True)
        await ctx.send(embed=embed)

    if isinstance(error, commands.MissingRequiredArgument):
        embed = discord.Embed(description=' ', color=0xc0392b)
        embed.add_field(name='__**ERROR**__', value='Bitte überprüfe deine Eingabe **@User/ID** fehlt!', inline=True)
        await ctx.send(embed=embed)

Clear:

@bot.command(pass_context=True, name='clear')
@has_permissions(manage_messages=True)
async def clean(ctx, limit: int, deleted=None):
    await ctx.channel.purge(limit=limit)
    await ctx.send(format(len(deleted) - 1))


@clean.error
async def clean_error(ctx, error):
    if isinstance(error, commands.MissingPermissions):
        embed = discord.Embed(description=' ', color=0xc0392b)
        embed.add_field(name='__**ERROR**__', value='Du hast nicht die Berechtigungen dazu!', inline=True)
        await ctx.send(embed=embed)

    if isinstance(error, commands.MissingRequiredArgument):
        embed = discord.Embed(description=' ', color=0xc0392b)
        embed.add_field(name='__**ERROR**__', value='Bitte überprüfe deine Eingabe **Anzahl** fehlt!', inline=True)
        await ctx.send(embed=embed)

Hat jemand eine Ahnung was bei den beiden die Fehler sein könnten?

Danke schon mal im Voraus :)

LG Max

P.S. Sorry, dass das hier so lange wurde.

Computer, Technik, Python, Discord, Discord Bot, discord.py

Python "in" in einer IF-verzweigen funktioniert nicht?

Hallo zusammen,

ich möchte per Tastendruck den Link zu einem Screenshot z.B. https://i.imgur.com/qk5TpU0.png
aus meiner Zwischenablage in ein Google Spreadshead hochladen. Diese sollen natürlich untereinander erscheinen und nicht doppelt. Hier funktioniert aber nicht der "in" Operator.

Bild vom Spreadshead: https://i.imgur.com/gOxxDeN.png

Der Code: "
import keyboard
from tkinter import Tk
import gspread
from oauth2client.service_account import ServiceAccountCredentials

# use creds to create a client to interact with the Google Drive API
scope = ["https://spreadsheets.google.com/feeds", 'https://www.googleapis.com/auth/spreadsheets',
         "https://www.googleapis.com/auth/drive.file", "https://www.googleapis.com/auth/drive"]
creds = ServiceAccountCredentials.from_json_keyfile_name('client_secret.json', scope)
client = gspread.authorize(creds)

# Find a workbook by name and open the first sheet
# Make sure you use the right name here.
sheet = client.open("test für api").sheet1


def check_value_existence():
    row = 2  # Reihe
    col = 2  # Spalte
    value = sheet.cell(col, row).value
    clipboard = Tk().clipboard_get()
    if "imgur" in value:
        while True:
            col = col + 1
            value = sheet.cell(col, row).value
            if "imgur" in value:
                break
        print("found", col)
        col = col - 1
        if value != clipboard:
            sheet.update_cell(2, 2, clipboard)


while True:
    if keyboard.read_key() == "p":
        print("You pressed p")
        check_value_existence()
"
Computer, programmieren, Code, Informatik, Python, Python 3

Meistgelesene Beiträge zum Thema Python