Code: Alles auswählen
{
"1139335633882579027": {
"mute_role": 1139356364297220167,
"member_role": 1139338847080165406,
"invite_link": "https://discord.gg/123"
},
"933078112047091753": {
"mute_role": 937777431975182376,
"member_role": 937776349001678908,
"invite_link": "https://discord.gg/123"
},
"1028973807240740904": {
"mute_role": 1139559797268688896,
"member_role": 1139559797268688896,
"invite_link": "https://discord.gg/123"
}
}
Der Bot sollte die guild_id erfassen und dann in der .json-Datei danach suchen. Wenn es eine findet, sendet es die Verify Embed. Wenn der Benutzer nun den Button drückt, sollte der Bot den „member_role“-Wert aus der .json zusammen mit der guild_id finden und dem Benutzer dann die Rolle mit dieser ID geben.
Das Problem ist nun, dass ich jedes Mal, wenn ich auf „Verify!" drücke, erscheint eine Fehlermeldung mit dieser Meldung:
2023-08-13 22:38:12 ERROR discord.ui.view Ignoring exception in view <VerifyButton timeout=None children=1> for item <Button style=<ButtonStyle.primary: 1> url=None disabled=False label='Verify!' emoji=None row=None>
Traceback (most recent call last):
File "C:\Users\Tim\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.11_qbz5n2kfra8p0\LocalCache\local-packages\Python311\site-packages\discord\ui\view.py", line 427, in _scheduled_task
await item.callback(interaction)
File "c:\Users\Tim\OneDrive\Dokumente\Dev\Python_JS\GlobalBot\main.py", line 242, in verify
user = interaction.user
^^^^^^^^^^^^^^^^
AttributeError: 'Button' object has no attribute 'user'
Mein Aktueller Code sieht so aus:
Code: Alles auswählen
class VerifyButton(discord.ui.View):
def __init__(self, role_id):
super().__init__(timeout=None)
self.role_id = role_id
@discord.ui.button(label="Verify!", style=discord.ButtonStyle.blurple)
async def verify(self, interaction: discord.Interaction, button: discord.ui.Button):
user = interaction.user
guild = interaction.guild
role = guild.get_role(self.role_id)
if role:
await user.add_roles(role, reason="Button Clicked")
embed = discord.Embed(title="Verifying successful!", description="Vielen Dank, dass du dich verifiziert hast. Du hast nun vollen Zugriff auf den Server!")
else:
embed = discord.Embed(title="Verifying Error!", description="Ein Fehler ist aufgetreten beim Hinzufügen der Rolle.")
await interaction.response.send_message(embed=embed, ephemeral=True)
@bot.command()
@commands.check(is_allowed)
async def test(ctx):
guild_id = None
if ctx.guild:
guild_id = ctx.guild.id
if str(guild_id) in server_setups:
setup_data = server_setups[str(guild_id)]
if 'member_role' in setup_data:
role_id = setup_data['member_role']
role = ctx.guild.get_role(role_id)
if role:
view = VerifyButton(role_id)
await ctx.send(embed=discord.Embed(title="Wie du dich verifizieren kannst", description="Um Zugriff auf den Server haben zu können, musst du dich verifizieren. Dies ist ganz leicht. Klicke einfach auf den Button unter dieser Nachricht, und schon bist du verifiziert."), view=view)
else:
await ctx.send("Rolle nicht gefunden.")
else:
await ctx.send("Member-Rolle nicht in den Server-Setups gefunden.")
else:
await ctx.send("Server-Setup wurde nicht gefunden.")
Ich habe jetzt viele Male andere Methoden verwendet, aber es tritt immer wieder der gleiche Fehler auf.
Ich habe auch noch einmal den gleichen Code, ohne dass die Rollen-ID aus der.json gelesen wird, und bereits angegeben ist, und der Fehler erscheint dort nicht, obwohl im Prinzip die gleiche Methode verwendet wird.
Dies ist der andere Code ohne die .json-Datei:
Code: Alles auswählen
class TestMenuButton(discord.ui.View):
def __init__(self):
super().__init__(timeout=None)
@discord.ui.button(label="Verify!", style=discord.ButtonStyle.blurple)
async def test(self, interaction: discord.Interaction, button: discord.ui.Button):
user = interaction.user
role_id = 1139338847080165406 # ID der Rolle, die zugewiesen werden soll
role = interaction.guild.get_role(role_id)
if role:
await user.add_roles(role, reason="Button Clicked")
embed = discord.Embed(title="Verifying successfull!", description="Vielen Dank das du dich verifiziert hast. Du hast nun vollen Zugriff auf den Server!")
else:
embed = discord.Embed(title="Verifying Error!", description="An error occurred while granting the role.")
await interaction.response.send_message(embed=embed, ephemeral=True)
@bot.tree.command(name="verify")
@commands.check(is_allowed)
async def buttonmenu(interaction: discord.Interaction):
view = TestMenuButton()
await interaction.response.send_message(embed=discord.Embed(title="Wie du dich verifizieren kannst", description="Um Zugriff auf den Server haben zu können musst du dich Verifizieren. Dies ist ganz leicht. Klicke einfach auf den Button unter dieseer Nachricht, und schon bist du Verifiziert."), view=view)
Weiß jemand woran das liegen könnte?