discord py - 为什么我的禁令命令不起作用?
discord py - Why doesn't my ban command work?
我想创建一个禁止命令,具有嵌入答案、日志功能和在用户被禁止时直接发送消息等功能。
出于某种原因,我的禁止命令没有 运行。执行命令时没有任何反应,if member is None
对我也不起作用。
我已经在 link 中发布了我的代码,提供:
https://hastebin.com/ubayatiqey.py
为什么我的机器人不响应我的 =ban
命令?我可以捕获一个错误来修复它吗?另外,为什么第 41 到 48 行没有像我期望的那样工作?
乍一看,这可能是因为您的参数没有默认值。另外,我认为您应该开始使用特定于命令的错误处理。
您可以在函数上方使用 {command.name}.error
来仅处理来自该特定命令的错误。
下面我添加了一些内容和评论,以说明可能解决此问题的方法。
#The below code bans player.
@bot.command()
@commands.has_permissions(ban_members = True)
async def ban(ctx, member : discord.Member = None, *, reason = None): # Adding "= None" to the end of parameters will tell the code that if someone who uses the command doesn't give a reason or a member, just set the values to None.
if member is None:
await ctx.send("⚠️ | Forgot Username")
if reason is None:
reason = "Adminban"
else:
reason = reason
# Funktionen für Nachrichten
embed = discord.Embed(title=" » Du wurdest ausgeschlossen!", description=f"Dein Account wurde so eben aus\nunserem Discord-Server ausgeschlossen.\n\n───────────────────────── \n ** | DETAILS ZU DEINER SPERRUNG..**\n Hier siehst du nun einige Details zu deiner Sperrung.\nDieses dienen sowohl als Info für dich, als auch für uns.\n\n┏♂️〢**Gesperrt von:** `{ctx.author}`\n┗〢**Grund:** `{reason}`\n\n───────────────────────── \n** » Du möchtest wieder auf unseren Server?**\nDann fülle dieses Formular aus:** https://bl4cklist.de/unban **", color=0xf04747)
embed.set_thumbnail(url="https://i.imgur.com/4np2bdK.png")
embed.set_footer(text=f"BL4CKLIST.DEGAMING | Discord-Server", icon_url="https://i.imgur.com/4np2bdK.png")
embed.set_image(url="https://i.imgur.com/Ua2y6oF.png")
response = choice([
'https://media1.giphy.com/media/9jCTfM9QIzPLqAwkE9/giphy.gif',
'https://media4.giphy.com/media/lY26OFBfrFFeecJEtT/giphy.gif',
'https://media4.giphy.com/media/Q4Eu7AZO4FY14FMnTo/giphy.gif',
'https://media3.giphy.com/media/BSdqZU7F0eRlXtAsPp/giphy.gif'
])
embed1 = discord.Embed(title=f" » {member.name} wurde gesperrt!", description=f"Genaue Informationen zu der Sperrung:\n\n┏♂️〢**Ausgeschlossen von:** `{ctx.author}`\n┗〢**Grund der Sperrung:** `{reason}`", color=0xe74c3c)
embed1.set_thumbnail(url=f"{member.avatar_url}")
embed1.set_footer(text=f"BL4CKLIST.DEGAMING | Discord-Server", icon_url="https://i.imgur.com/4np2bdK.png")
embed1.set_image(url=f"{response}")
embed2 = discord.Embed(title=" » Ein Mitglied wurde gesperrt!", description=f"Hier siehst du nun einige Details zur Sperrung.\n─────────────────────────\n\n» **Grund der Sperrung:** `{reason}`\n» **Name des Users:** `{member}`\n» **ID des Gesperrten:** `{member.id}`\n\n─────────────────────────", color=0xf04747)
embed2.set_thumbnail(url=f"{member.avatar_url}")
embed2.set_footer(text=f"BL4CKLIST.DEGAMING | Discord-Server", icon_url="https://i.imgur.com/4np2bdK.png")
channel = bot.get_channel(755014990465073306)
# Funktionen für Nachrichten
await member.send(embed=embed)
await member.ban(reason=reason)
await ctx.send(embed=embed1)
await channel.send(embed=embed2)
# This part will track the errors specifically for the ban command only, and in this case, will print out the error
@ban.error
async def ban_error(ctx, error):
print (error)
您犯了一个错误,导致您的整个代码无法成为 运行。当你写 async def ban(ctx, member : discord.Member, *, reason):
时,那是几行。首先,您从未将成员默认为 none,并且您从未将原因默认为 none,因此它们仍然是 必需的 参数。如果我们返工我们得到的代码
async def ban(ctx, member : discord.Member=None, *, reason=None):
.
希望对您有所帮助!如果您对此代码有任何疑问或有不可预见的错误,请随时跟进!
在查看您的代码后,我注意到了一些事情。首先,您试图打印 error
这似乎是一个从未在您的代码中定义的变量。如果您想在出现错误时打印错误,我建议您为 ban 命令创建一个错误处理程序。其次,您正在尝试使用 member
和 reason
作为可选参数,虽然它们从未设置为可选参数,但我建议也更改它。我还注意到您正在尝试使用意图,我无法验证您是否启用了意图,但您需要从 Discord 开发人员门户启用它们。我会说你应该尝试 运行 没有意图的代码,或者在 Discord 开发者门户中启用它们。如果这不能解决您的问题,请告诉我。
如果您希望我进行所有更改,您可以复制此代码并将其粘贴到您的 IDE.:
@bot.command()
@commands.has_permissions(ban_members = True)
async def ban(ctx, member : discord.Member=None, *, reason=None):
if member is None:
await ctx.send("⚠️ | Forgot Username")
return
if reason is None:
reason = "Adminban"
else:
reason = reason
# Funktionen für Nachrichten
embed = discord.Embed(title=" » Du wurdest ausgeschlossen!", description=f"Dein Account wurde so eben aus\nunserem Discord-Server ausgeschlossen.\n\n───────────────────────── \n ** | DETAILS ZU DEINER SPERRUNG..**\n Hier siehst du nun einige Details zu deiner Sperrung.\nDieses dienen sowohl als Info für dich, als auch für uns.\n\n┏♂️〢**Gesperrt von:** `{ctx.author}`\n┗〢**Grund:** `{reason}`\n\n───────────────────────── \n** » Du möchtest wieder auf unseren Server?**\nDann fülle dieses Formular aus:** https://bl4cklist.de/unban **", color=0xf04747)
embed.set_thumbnail(url="https://i.imgur.com/4np2bdK.png")
embed.set_footer(text=f"BL4CKLIST.DEGAMING | Discord-Server", icon_url="https://i.imgur.com/4np2bdK.png")
embed.set_image(url="https://i.imgur.com/Ua2y6oF.png")
response = choice([
'https://media1.giphy.com/media/9jCTfM9QIzPLqAwkE9/giphy.gif',
'https://media4.giphy.com/media/lY26OFBfrFFeecJEtT/giphy.gif',
'https://media4.giphy.com/media/Q4Eu7AZO4FY14FMnTo/giphy.gif',
'https://media3.giphy.com/media/BSdqZU7F0eRlXtAsPp/giphy.gif'
])
embed1 = discord.Embed(title=f" » {member.name} wurde gesperrt!", description=f"Genaue Informationen zu der Sperrung:\n\n┏♂️〢**Ausgeschlossen von:** `{ctx.author}`\n┗〢**Grund der Sperrung:** `{reason}`", color=0xe74c3c)
embed1.set_thumbnail(url=f"{member.avatar_url}")
embed1.set_footer(text=f"BL4CKLIST.DEGAMING | Discord-Server", icon_url="https://i.imgur.com/4np2bdK.png")
embed1.set_image(url=f"{response}")
embed2 = discord.Embed(title=" » Ein Mitglied wurde gesperrt!", description=f"Hier siehst du nun einige Details zur Sperrung.\n─────────────────────────\n\n» **Grund der Sperrung:** `{reason}`\n» **Name des Users:** `{member}`\n» **ID des Gesperrten:** `{member.id}`\n\n─────────────────────────", color=0xf04747)
embed2.set_thumbnail(url=f"{member.avatar_url}")
embed2.set_footer(text=f"BL4CKLIST.DEGAMING | Discord-Server", icon_url="https://i.imgur.com/4np2bdK.png")
channel = bot.get_channel(755014990465073306)
# Funktionen für Nachrichten
await member.send(embed=embed)
await member.ban(reason=reason)
await ctx.send(embed=embed1)
await channel.send(embed=embed2)
# Error handler
@ban.error()
async def ban_error(ctx, error):
if isinstance(error):
print(error)
我想创建一个禁止命令,具有嵌入答案、日志功能和在用户被禁止时直接发送消息等功能。
出于某种原因,我的禁止命令没有 运行。执行命令时没有任何反应,if member is None
对我也不起作用。
我已经在 link 中发布了我的代码,提供: https://hastebin.com/ubayatiqey.py
为什么我的机器人不响应我的 =ban
命令?我可以捕获一个错误来修复它吗?另外,为什么第 41 到 48 行没有像我期望的那样工作?
乍一看,这可能是因为您的参数没有默认值。另外,我认为您应该开始使用特定于命令的错误处理。
您可以在函数上方使用 {command.name}.error
来仅处理来自该特定命令的错误。
下面我添加了一些内容和评论,以说明可能解决此问题的方法。
#The below code bans player.
@bot.command()
@commands.has_permissions(ban_members = True)
async def ban(ctx, member : discord.Member = None, *, reason = None): # Adding "= None" to the end of parameters will tell the code that if someone who uses the command doesn't give a reason or a member, just set the values to None.
if member is None:
await ctx.send("⚠️ | Forgot Username")
if reason is None:
reason = "Adminban"
else:
reason = reason
# Funktionen für Nachrichten
embed = discord.Embed(title=" » Du wurdest ausgeschlossen!", description=f"Dein Account wurde so eben aus\nunserem Discord-Server ausgeschlossen.\n\n───────────────────────── \n ** | DETAILS ZU DEINER SPERRUNG..**\n Hier siehst du nun einige Details zu deiner Sperrung.\nDieses dienen sowohl als Info für dich, als auch für uns.\n\n┏♂️〢**Gesperrt von:** `{ctx.author}`\n┗〢**Grund:** `{reason}`\n\n───────────────────────── \n** » Du möchtest wieder auf unseren Server?**\nDann fülle dieses Formular aus:** https://bl4cklist.de/unban **", color=0xf04747)
embed.set_thumbnail(url="https://i.imgur.com/4np2bdK.png")
embed.set_footer(text=f"BL4CKLIST.DEGAMING | Discord-Server", icon_url="https://i.imgur.com/4np2bdK.png")
embed.set_image(url="https://i.imgur.com/Ua2y6oF.png")
response = choice([
'https://media1.giphy.com/media/9jCTfM9QIzPLqAwkE9/giphy.gif',
'https://media4.giphy.com/media/lY26OFBfrFFeecJEtT/giphy.gif',
'https://media4.giphy.com/media/Q4Eu7AZO4FY14FMnTo/giphy.gif',
'https://media3.giphy.com/media/BSdqZU7F0eRlXtAsPp/giphy.gif'
])
embed1 = discord.Embed(title=f" » {member.name} wurde gesperrt!", description=f"Genaue Informationen zu der Sperrung:\n\n┏♂️〢**Ausgeschlossen von:** `{ctx.author}`\n┗〢**Grund der Sperrung:** `{reason}`", color=0xe74c3c)
embed1.set_thumbnail(url=f"{member.avatar_url}")
embed1.set_footer(text=f"BL4CKLIST.DEGAMING | Discord-Server", icon_url="https://i.imgur.com/4np2bdK.png")
embed1.set_image(url=f"{response}")
embed2 = discord.Embed(title=" » Ein Mitglied wurde gesperrt!", description=f"Hier siehst du nun einige Details zur Sperrung.\n─────────────────────────\n\n» **Grund der Sperrung:** `{reason}`\n» **Name des Users:** `{member}`\n» **ID des Gesperrten:** `{member.id}`\n\n─────────────────────────", color=0xf04747)
embed2.set_thumbnail(url=f"{member.avatar_url}")
embed2.set_footer(text=f"BL4CKLIST.DEGAMING | Discord-Server", icon_url="https://i.imgur.com/4np2bdK.png")
channel = bot.get_channel(755014990465073306)
# Funktionen für Nachrichten
await member.send(embed=embed)
await member.ban(reason=reason)
await ctx.send(embed=embed1)
await channel.send(embed=embed2)
# This part will track the errors specifically for the ban command only, and in this case, will print out the error
@ban.error
async def ban_error(ctx, error):
print (error)
您犯了一个错误,导致您的整个代码无法成为 运行。当你写 async def ban(ctx, member : discord.Member, *, reason):
时,那是几行。首先,您从未将成员默认为 none,并且您从未将原因默认为 none,因此它们仍然是 必需的 参数。如果我们返工我们得到的代码
async def ban(ctx, member : discord.Member=None, *, reason=None):
.
希望对您有所帮助!如果您对此代码有任何疑问或有不可预见的错误,请随时跟进!
在查看您的代码后,我注意到了一些事情。首先,您试图打印 error
这似乎是一个从未在您的代码中定义的变量。如果您想在出现错误时打印错误,我建议您为 ban 命令创建一个错误处理程序。其次,您正在尝试使用 member
和 reason
作为可选参数,虽然它们从未设置为可选参数,但我建议也更改它。我还注意到您正在尝试使用意图,我无法验证您是否启用了意图,但您需要从 Discord 开发人员门户启用它们。我会说你应该尝试 运行 没有意图的代码,或者在 Discord 开发者门户中启用它们。如果这不能解决您的问题,请告诉我。
如果您希望我进行所有更改,您可以复制此代码并将其粘贴到您的 IDE.:
@bot.command()
@commands.has_permissions(ban_members = True)
async def ban(ctx, member : discord.Member=None, *, reason=None):
if member is None:
await ctx.send("⚠️ | Forgot Username")
return
if reason is None:
reason = "Adminban"
else:
reason = reason
# Funktionen für Nachrichten
embed = discord.Embed(title=" » Du wurdest ausgeschlossen!", description=f"Dein Account wurde so eben aus\nunserem Discord-Server ausgeschlossen.\n\n───────────────────────── \n ** | DETAILS ZU DEINER SPERRUNG..**\n Hier siehst du nun einige Details zu deiner Sperrung.\nDieses dienen sowohl als Info für dich, als auch für uns.\n\n┏♂️〢**Gesperrt von:** `{ctx.author}`\n┗〢**Grund:** `{reason}`\n\n───────────────────────── \n** » Du möchtest wieder auf unseren Server?**\nDann fülle dieses Formular aus:** https://bl4cklist.de/unban **", color=0xf04747)
embed.set_thumbnail(url="https://i.imgur.com/4np2bdK.png")
embed.set_footer(text=f"BL4CKLIST.DEGAMING | Discord-Server", icon_url="https://i.imgur.com/4np2bdK.png")
embed.set_image(url="https://i.imgur.com/Ua2y6oF.png")
response = choice([
'https://media1.giphy.com/media/9jCTfM9QIzPLqAwkE9/giphy.gif',
'https://media4.giphy.com/media/lY26OFBfrFFeecJEtT/giphy.gif',
'https://media4.giphy.com/media/Q4Eu7AZO4FY14FMnTo/giphy.gif',
'https://media3.giphy.com/media/BSdqZU7F0eRlXtAsPp/giphy.gif'
])
embed1 = discord.Embed(title=f" » {member.name} wurde gesperrt!", description=f"Genaue Informationen zu der Sperrung:\n\n┏♂️〢**Ausgeschlossen von:** `{ctx.author}`\n┗〢**Grund der Sperrung:** `{reason}`", color=0xe74c3c)
embed1.set_thumbnail(url=f"{member.avatar_url}")
embed1.set_footer(text=f"BL4CKLIST.DEGAMING | Discord-Server", icon_url="https://i.imgur.com/4np2bdK.png")
embed1.set_image(url=f"{response}")
embed2 = discord.Embed(title=" » Ein Mitglied wurde gesperrt!", description=f"Hier siehst du nun einige Details zur Sperrung.\n─────────────────────────\n\n» **Grund der Sperrung:** `{reason}`\n» **Name des Users:** `{member}`\n» **ID des Gesperrten:** `{member.id}`\n\n─────────────────────────", color=0xf04747)
embed2.set_thumbnail(url=f"{member.avatar_url}")
embed2.set_footer(text=f"BL4CKLIST.DEGAMING | Discord-Server", icon_url="https://i.imgur.com/4np2bdK.png")
channel = bot.get_channel(755014990465073306)
# Funktionen für Nachrichten
await member.send(embed=embed)
await member.ban(reason=reason)
await ctx.send(embed=embed1)
await channel.send(embed=embed2)
# Error handler
@ban.error()
async def ban_error(ctx, error):
if isinstance(error):
print(error)