Python Discord Bot auf nachrichten antworten nicht möglich

Txc2407

Cadet 3rd Year
Registriert
Juni 2020
Beiträge
42
Hallo, ich versuche jetzt schon seit längerer Zeit nach einer Lösung wie ich es schaffe das mein Bot auf nachrichten im Chat antwortet, ich glaube das irgendwas mit den unterern zeilen (siehe screen) nicht stimmt. wenn ich diese zeilen dann lösche und dann starte, dann funktioniert der bot wieder einwandfrei und reagiert auf commands (.help oder so). betroffene code zeile 174,175

Der Code ist hier: Diese Klammer [ oben und am Ende sind nicht vom Code, bekomm die hier gerade nicht weg

Python:
[
import asyncio
import random
import discord
from discord import Member, Guild, User
from webserver import keep_alive
import os
client = discord.Client(intents=discord.Intents.all())
antworten = [
    "Ja", "Nein", "Vielleicht", "Warscheinlich", "Sieht so aus",
    "Sehr warscheinlich", "Sehr unwahrscheinlich"
]

@client.event
async def on_ready():
  print("Logged in as Bot {}".format(client.user.name))
  client.loop.create_task(status_task())

async def status_task():
  color = [
      discord.Colour.red(),
      discord.Colour.orange(),
      discord.Colour.gold(),
      discord.Colour.green(),
      discord.Colour.blue(),
      discord.Colour.purple()
  ]
  while True:
    await client.change_presence(
        activity=discord.Game("mit einem Messer."),
        status=discord.Status.online)
    await asyncio.sleep(40)
    await client.change_presence(activity=discord.Game("in der Entwicklungsphase"),
                                 status=discord.Status.online)
    await asyncio.sleep(25)
    await client.change_presence(activity=discord.Game(
        "Join this server not now: [URL]https://discord.gg/8F2XjMk[/URL]"),
                                 status=discord.Status.online)
    await asyncio.sleep(60)
    await client.change_presence(
        activity=discord.Game("Update Loading... 42 %"),
        status=discord.Status.online)
    await asyncio.sleep(70)
    guild: Guild = client.get_guild(772190779299987506)
    if guild:
      role = guild.get_role(772501470394318868)
      if role: ...

def is_not_pinned(mess):
  return not mess.pinned

@client.event
async def on_member_join(member):
  guild: Guild = member.guild
  if not member.bot:
    embed = discord.Embed(
        title="Willkommen auf unserem Server, {} ".format(member.name),
        description=
        "Bitte akzeptiere die Regeln um direkt loslegen zu könen!",
        color=0x22a7f0)
    try:
      if not member.dm_channel:
        await member.create_dm()
      await member.dm_channel.send(embed=embed)
    except discord.errors.Forbidden:
      print(
          "Es konnte keine Willkommensnachricht an {} gesendet werden.".
          format(member.name))
@client.event
async def on_message(message):
  if message.author.bot:
    return
  if ".help" in message.content:
    await message.channel.send(
        "[I]Commandhilfe des Serverbots.[/I] "
        "\r\n \r\n"
        "``.help - Zeigt diese Hilfe an.\r\n"
        ".userinfo [Name] - Zeigt eine Info über den angegebenen User an.\r\n"
        ".8ball [Frage]- Lässt ein Orakel erscheinen was es ermöglicht, jedes Ereignis vorherzusagen.\r\n"
        ".clear [Anzahl]- Command zum Löschen von Chatnachrichten. // Löscht nur Nachrichten der letzten 2 Wochen. //\r\n"
        ".ban [Name] - Um einen bestimmten User von dem Server zu bannen. Nur für Moderatoren.\r\n"
        ".kick [Name] - Um einen bestimmten User von dem Server zu kicken. Nur für Moderatoren.``\r\n"
    )
  if message.content.startswith(
      ".ban") and message.author.guild_permissions.ban_members:
    args = message.content.split(" ")
    if len(args) == 2:
      member: Member = discord.utils.find(lambda m: args[1] in m.name,
                                          message.guild.members)
      if member:
        await member.ban()
        await message.channel.send(
            f"[I]Spieler {member.name} wurde erfolgreich gekickt.[/I]")
      else:
        await message.channel.send(
            f"Kein User mit dem Namen {args[1]} gefunden.")
  if message.content.startswith(
      ".unban") and message.author.guild_permissions.kick_members:
    args = message.content.split(" ")
    if len(args) == 2:
      user: User = discord.utils.find(
          lambda banentry: args[1] in banentry.user.name,
          message.guild.bans()).user
      if user:
        await message.guild.unban(user)
        await message.channel.send(f"Member {member.name} entbannt")
      else:
        await message.channel.send(
            f"Kein User mit dem Namen {args[1]} gefunden.")
  if message.content.startswith(
      ".kick") and message.author.guild_permissions.kick_members:
    args = message.content.split(" ")
    if len(args) == 2:
      member: Member = discord.utils.find(lambda m: args[1] in m.name,
                                          message.guild.members)
      if member:
        await member.kick()
        await message.channel.send(
            f"[I]Spieler {member.name} wurde erfolgreich gekickt.[/I]")
      else:
        await message.channel.send(
            f"Kein User mit dem Namen {args[1]} gefunden.")
  if message.content.startswith(".userinfo"):
    args = message.content.split(" ")
    if len(args) == 2:
      member: Member = discord.utils.find(lambda m: args[1] in m.name,
                                          message.guild.members)
      if member:
        embed = discord.Embed(
            title="Userinfo für {}".format(member.name),
            description="Dies ist eine Userinfo für den User {}".
            format(member.mention),
            color=0x22a7f0)
        embed.add_field(
            name="Server beigetreten!",
            value=member.joined_at.strftime("%d/%m/%Y, %H:%M:%S"),
            inline=True)
        embed.add_field(
            name="Discord beigetreten",
            value=member.created_at.strftime("%d/%m/%Y, %H:%M:%S"),
            inline=True)
        rollen = ""
        for role in member.roles:
          if not role.is_default():
            rollen += "{} \r\n".format(role.mention)
        if rollen:
          embed.add_field(name="Rollen", value=rollen, inline=True)
        embed.set_thumbnail(url=member.avatar_url)
        embed.set_footer(text="Userinfo created by Kowalski")
        await message.channel.send(embed=embed)
  if message.content.startswith(".clear"):
    if message.author.permissions_in(message.channel).manage_messages:
      args = message.content.split(" ")
      if len(args) == 2:
        if args[1].isdigit():
          count = int(args[1]) + 1
          deleted = await message.channel.purge(limit=count,
                                                check=is_not_pinned)
          await message.channel.send(
              "{} Nachrichten gelöscht.".format(len(deleted) - 1))
  if message.content.startswith(".8ball"):
    args = message.content.split(" ")
    if len(args) >= 2:
      frage = " ".join(args[1:])
      mess = await message.channel.send(
          "Ich versuche deine Frage [ICODE]{0}[/ICODE] zu beantworten.".format(frage))
      await asyncio.sleep(2)
      await mess.edit(content="Ich kontaktiere das Orakel...")
      await asyncio.sleep(2)
      await mess.edit(
          content="Deine Antwort zur Frage [ICODE]{0}[/ICODE] lautet: [ICODE]{1}[/ICODE]".format(
              frage, random.choice(antworten)))

   if message.content.startswith("Test"):
       await message.channel.send("Hey")

keep_alive()
TOKEN = os.environ.get("DISCORD_BOT_SECRET")
client.run(TOKEN)
]
 

Anhänge

  • Screenshot_118.png
    Screenshot_118.png
    4,3 KB · Aufrufe: 333
  • Screenshot_116.png
    Screenshot_116.png
    4,3 KB · Aufrufe: 323
Zuletzt bearbeitet:
Das "if message.content.startswith("Test"):" scheint mir nicht richtig eingerückt. Dann sollte das auch klappen.
 
  • Gefällt mir
Reaktionen: dominic.e und NJay
Die Fehelrmeldung ist doch eindeutig. Die Einrueckung stimmt nicht.
 
Zurück
Oben