TypeError: 'module' object is not callable

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
MauroMauHD
User
Beiträge: 9
Registriert: Freitag 3. September 2021, 15:49

hallo,kann mir jemand helfen ich code einen discord bot und komme nicht weiter da immer ein fehler auftretet
das hier ist der code:

Code: Alles auswählen

import asyncio
import discord
from discord import client
from discord import embeds
from discord import colour
from discord import file
from discord.colour import Color
from discord.ext import commands
from discord.ext.commands.core import has_permissions
from discord.guild import BanEntry
import pytz
from datetime import datetime

intents = discord.Intents.all()
intents.members = True
bot = commands.Bot(command_prefix="?", intents=intents)
bot.warnings = {} # guild_id : {member_id: [count, [(admin_id, reason)]]}
bot.remove_command("help")

@bot.event
async def on_ready():
    for guild in bot.guilds:
        bot.warnings[guild.id] = {}
        
        async with asyncio(f"{guild.id}.txt", mode="a") as temp:
            pass

        async with asyncio(f"{guild.id}.txt", mode="r") as file:
            lines = await file.readlines()

            for line in lines:
                data = line.split(" ")
                member_id = int(data[0])
                admin_id = int(data[1])
                reason = " ".join(data[2:]).strip("\n")

                try:
                    bot.warnings[guild.id][member_id][0] += 1
                    bot.warnings[guild.id][member_id][1].append((admin_id, reason))

                except KeyError:
                    bot.warnings[guild.id][member_id] = [1, [(admin_id, reason)]] 
    
    print(bot.user.name + " is ready.")
    
@bot.command(name="help")
async def help(ctx):
    embed = discord.Embed(title=f"Help Menü", description=" ", color=0x4cd137)

    embed.add_field(name="prafix", value=f"```?```")
    embed.add_field(name="userinfo", value=f"```Zeige dir alle infos zu einem User```", inline=False)
    embed.add_field(name="message", value=f"```Lasse den bot dir nachmachen```", inline=False)
    embed.add_field(name="kill", value=f"```kille einen User muhahaha```", inline=False)
    embed.add_field(name="test", value=f"```Teste ob die bot commands online sind```", inline=False)
    embed.add_field(name="help", value=f"```lasse dir dieses menü anzeigen```", inline=False)
    embed.set_footer(text=f'Angefordert von {ctx.author.name} • {ctx.author.id}', icon_url=ctx.author.avatar_url)
    await ctx.send(embed=embed)

@bot.command(name='userinfo')
async def userinfo(ctx, member: discord.Member):
    de = pytz.timezone('Europe/Berlin')
    embed = discord.Embed(title=f'> Userinfo für {member.display_name}',
                          description='', color=0x4cd137, timestamp=datetime.now().astimezone(tz=de))

    embed.add_field(name='Name', value=f'```{member.name}#{member.discriminator}```', inline=True)
    embed.add_field(name='Bot', value=f'```{("Ja" if member.bot else "Nein")}```', inline=True)
    embed.add_field(name='Nickname', value=f'```{(member.nick if member.nick else "Nicht gesetzt")}```', inline=True)
    embed.add_field(name='Server beigetreten', value=f'```{member.joined_at}```', inline=True)
    embed.add_field(name='Discord beigetreten', value=f'```{member.created_at}```', inline=True)
    embed.add_field(name='Rollen', value=f'```{len(member.roles)}```', inline=True)
    embed.add_field(name='Höchste Rolle', value=f'```{member.top_role.name}```', inline=True)
    embed.add_field(name='Farbe', value=f'```{member.color}```', inline=True)
    embed.add_field(name='Booster', value=f'```{("Ja" if member.premium_since else "Nein")}```', inline=True)
    embed.set_footer(text=f'Angefordert von {ctx.author.name} • {ctx.author.id}', icon_url=ctx.author.avatar_url)
    await ctx.send(embed=embed)

@bot.command(name='message')
async def message(ctx, *args):
    await ctx.send(f'{" ".join(args)}')

@bot.command(name="kill")
async def kill(ctx, member: discord.Member):
    await ctx.send(f'{member.display_name} wurde gekillt.')

@kill.error
async def kill_error(ctx, error):
    if isinstance(error, commands.BadArgument):
        await ctx.send('Ich kann ihn nicht finden sry.')

@bot.command(name="test")
async def test(ctx):
    await ctx.send("Test erfolgt der bot funktionirt")

@bot.command()
@commands.has_permissions(administrator=True)
async def warn(ctx, member: discord.Member=None, *, reason=None):
    if member is None:
        return await ctx.send("The provided member could not be found or you forgot to provide one.")
        
    if reason is None:
        return await ctx.send("Please provide a reason for warning this user.")

    try:
        first_warning = False
        bot.warnings[ctx.guild.id][member.id][0] += 1
        bot.warnings[ctx.guild.id][member.id][1].append((ctx.author.id, reason))

    except KeyError:
        first_warning = True
        bot.warnings[ctx.guild.id][member.id] = [1, [(ctx.author.id, reason)]]

    count = bot.warnings[ctx.guild.id][member.id][0]

    async with asyncio(f"{ctx.guild.id}.txt", mode="a") as file:
        await file.write(f"{member.id} {ctx.author.id} {reason}\n")

    await ctx.send(f"{member.mention} has {count} {'warning' if first_warning else 'warnings'}.")

@bot.command()
@commands.has_permissions(administrator=True)
async def warnings(ctx, member: discord.Member=None):
    if member is None:
        return await ctx.send("The provided member could not be found or you forgot to provide one.")
    
    embed = discord.Embed(title=f"Displaying Warnings for {member.name}", description="", colour=discord.Colour.red())
    try:
        i = 1
        for admin_id, reason in bot.warnings[ctx.guild.id][member.id][1]:
            admin = ctx.guild.get_member(admin_id)
            embed.description += f"**Warning {i}** given by: {admin.mention} for: *'{reason}'*.\n"
            i += 1

        await ctx.send(embed=embed)

    except KeyError: # no warnings
        await ctx.send("This user has no warnings.")


bot.run('Hier steht der discord bot token')
und das der fehler code:

Code: Alles auswählen

Ignoring exception in on_ready
Traceback (most recent call last):
  File "C:\Users\mauro\AppData\Local\Programs\Python\Python39\lib\site-packages\discord\client.py", line 343, in _run_event
    await coro(*args, **kwargs)
  File "e:\Users\mauro\Desktop\BohnenHD bot\main.py", line 25, in on_ready
    async with asyncio(f"{guild.id}.txt", mode="a") as temp:
TypeError: 'module' object is not callable
bitte hilft mir
Benutzeravatar
__blackjack__
User
Beiträge: 13004
Registriert: Samstag 2. Juni 2018, 10:21
Wohnort: 127.0.0.1
Kontaktdaten:

Das hattest Du doch hier schon mal gefragt: viewtopic.php?f=1&t=52924

Ich denke nicht, dass sich an der/den Antworten was ändert, nur weil Du es noch einmal fragst. Du hast da von rogerb sowohl den Grund, als auch eine Lösung bekommen.
“Most people find the concept of programming obvious, but the doing impossible.” — Alan J. Perlis
MauroMauHD
User
Beiträge: 9
Registriert: Freitag 3. September 2021, 15:49

__blackjack__ hat geschrieben: Samstag 11. September 2021, 15:53 Das hattest Du doch hier schon mal gefragt: viewtopic.php?f=1&t=52924

Ich denke nicht, dass sich an der/den Antworten was ändert, nur weil Du es noch einmal fragst. Du hast da von rogerb sowohl den Grund, als auch eine Lösung bekommen.
NEIN! das was er geschriben hat geht nicht da kommt dann

Code: Alles auswählen

Ignoring exception in on_ready
Traceback (most recent call last):
  File "C:\Users\mauro\AppData\Local\Programs\Python\Python39\lib\site-packages\discord\client.py", line 343, in _run_event
    await coro(*args, **kwargs)
  File "e:\Users\mauro\Desktop\BohnenHD bot\main.py", line 24, in on_ready
    async with aiofiles.open(f"{guild.id}.txt", mode="a") as temp:
NameError: name 'aiofiles' is not defined
rogerb
User
Beiträge: 878
Registriert: Dienstag 26. November 2019, 23:24

@MauroMauHD,

in dem anderen Thread hatte ich geschrieben:
"aiofiles" wirst du wohl auch importieren müssen.
Also must du oben in den ersten Zeilen

Code: Alles auswählen

import aiofiles
einfügen.

Falls weitere Fehlermeldungen kommen, must du halt fragen. Dann schauen wir mal wie man das lösen kann.
MauroMauHD
User
Beiträge: 9
Registriert: Freitag 3. September 2021, 15:49

rogerb hat geschrieben: Samstag 11. September 2021, 16:58 @MauroMauHD,

in dem anderen Thread hatte ich geschrieben:
"aiofiles" wirst du wohl auch importieren müssen.
Also must du oben in den ersten Zeilen

Code: Alles auswählen

import aiofiles
einfügen.

Falls weitere Fehlermeldungen kommen, must du halt fragen. Dann schauen wir mal wie man das lösen kann.
Danke habe es überlesen jetzt steht da als fehlermeldung

Code: Alles auswählen

Traceback (most recent call last):
  File "e:\Users\mauro\Desktop\BohnenHD bot\main.py", line 12, in <module>
    import aiofiles
ModuleNotFoundError: No module named 'aiofiles'
rogerb
User
Beiträge: 878
Registriert: Dienstag 26. November 2019, 23:24

@MauroMauHD,

die Fehlermeldung bedeutet, dass aiofiles bei dir nicht installiert ist.
aiofiles ist ein externe Library, die man zusätzlich installieren muss.
Dazu must du im Terminal "pip install aiofiles" eingeben.
MauroMauHD
User
Beiträge: 9
Registriert: Freitag 3. September 2021, 15:49

rogerb hat geschrieben: Sonntag 12. September 2021, 15:30 @MauroMauHD,

die Fehlermeldung bedeutet, dass aiofiles bei dir nicht installiert ist.
aiofiles ist ein externe Library, die man zusätzlich installieren muss.
Dazu must du im Terminal "pip install aiofiles" eingeben.
danke aber jetzt kommt das :/

Code: Alles auswählen

pip : Die Benennung "pip" wurde nicht als Name eines Cmdlet, einer Funktion, einer Skriptdatei oder eines ausführbaren Programms erkannt. Überprüfen Sie die Schreibweise des Namens, oder ob der Pfad korrekt ist (sofern enthalten), und 
wiederholen Sie den Vorgang.
In Zeile:1 Zeichen:1
+ pip install aiofiles
+ ~~~
    + CategoryInfo          : ObjectNotFound: (pip:String) [], CommandNotFoundException
    + FullyQualifiedErrorId : CommandNotFoundException
MauroMauHD
User
Beiträge: 9
Registriert: Freitag 3. September 2021, 15:49

rogerb hat geschrieben: Sonntag 12. September 2021, 15:30 @MauroMauHD,

die Fehlermeldung bedeutet, dass aiofiles bei dir nicht installiert ist.
aiofiles ist ein externe Library, die man zusätzlich installieren muss.
Dazu must du im Terminal "pip install aiofiles" eingeben.
danke aber jetzt kommt das :/

Code: Alles auswählen

pip : Die Benennung "pip" wurde nicht als Name eines Cmdlet, einer Funktion, einer Skriptdatei oder eines ausführbaren Programms erkannt. Überprüfen Sie die Schreibweise des Namens, oder ob der Pfad korrekt ist (sofern enthalten), und 
wiederholen Sie den Vorgang.
In Zeile:1 Zeichen:1
+ pip install aiofiles
+ ~~~
    + CategoryInfo          : ObjectNotFound: (pip:String) [], CommandNotFoundException
    + FullyQualifiedErrorId : CommandNotFoundException
rogerb
User
Beiträge: 878
Registriert: Dienstag 26. November 2019, 23:24

@MauroMauHD,

auf was für einem System verwendest du das denn? Windows, Linux, ...
Anscheinend Windows, ...

Auf Windows wird es meistens schon mit dem Python Installer mit installiert. Wie hast du denn Python installiert?
Ich denke am einfachsten wäre es, du gehst die gleichen Schritte wie bei der Erstinstallation noch einmal durch und vergewisserst dich, dass pip installiert wird.
MauroMauHD
User
Beiträge: 9
Registriert: Freitag 3. September 2021, 15:49

rogerb hat geschrieben: Freitag 17. September 2021, 16:13 @MauroMauHD,

auf was für einem System verwendest du das denn? Windows, Linux, ...
Anscheinend Windows, ...

Auf Windows wird es meistens schon mit dem Python Installer mit installiert. Wie hast du denn Python installiert?
Ich denke am einfachsten wäre es, du gehst die gleichen Schritte wie bei der Erstinstallation noch einmal durch und vergewisserst dich, dass pip installiert wird.
also habe jetzt python 3.9.7 nochmal installirt und habe unten winn ich in der suchleiste suche ein program namens pip
3.9.exe
rogerb
User
Beiträge: 878
Registriert: Dienstag 26. November 2019, 23:24

@MauroMauHD,

pip ist ein Konsolenprogramm. Das wirst du in der Suchleiste wohl nicht finden.
"pip install aiohttp" muss in der Kommandozeile/ Konsole/ Terminal wie du es auch immer nennen willst, eingetippt werden.
Benutzeravatar
snafu
User
Beiträge: 6731
Registriert: Donnerstag 21. Februar 2008, 17:31
Wohnort: Gelsenkirchen

Wahrscheinlich sind Python und der Skript-Ordner nicht im PATH. Da hätte man bei der Installation unter Windows das Häkchen entsprechend setzen müssen. Oder man passt den PATH nachträglich per Hand an.

Ansonsten: py -m pip install paketname
MauroMauHD
User
Beiträge: 9
Registriert: Freitag 3. September 2021, 15:49

snafu hat geschrieben: Samstag 18. September 2021, 12:27 Wahrscheinlich sind Python und der Skript-Ordner nicht im PATH. Da hätte man bei der Installation unter Windows das Häkchen entsprechend setzen müssen. Oder man passt den PATH nachträglich per Hand an.

Ansonsten: py -m pip install paketname
wie mache ich sie in den path
__deets__
User
Beiträge: 14494
Registriert: Mittwoch 14. Oktober 2015, 14:29

Indem du “wie mache ich etwas in PATH” googelst, statt wie eine Kuckuksküken auf den nächsten Happen von Vati oder Mutti zu warten.
Benutzeravatar
__blackjack__
User
Beiträge: 13004
Registriert: Samstag 2. Juni 2018, 10:21
Wohnort: 127.0.0.1
Kontaktdaten:

Wobei so etwas auch tatsächlich in der Python-Dokumentation beschrieben steht.
“Most people find the concept of programming obvious, but the doing impossible.” — Alan J. Perlis
__deets__
User
Beiträge: 14494
Registriert: Mittwoch 14. Oktober 2015, 14:29

Das ist ja nix anderes. Es wird mit dem Programmieren halt nix, wenn man sich nicht wenigstens ein bisschen selbst bemüht. Das ganze ist unzweifelhaft komplizierter als man sich das wünscht, und man erklärt ja auch was. Aber wenigstens bis “das hier habe ich eingetragen, aber es hat nichts geändert” oder so, sollte man schon kommen.
Benutzeravatar
snafu
User
Beiträge: 6731
Registriert: Donnerstag 21. Februar 2008, 17:31
Wohnort: Gelsenkirchen

Man kann auch einfach PATH bei der Suche vom Startmenü eingeben.
Antworten