想針對指令加上使用條件。
import discord
from discord.ext import commands
@Bot.user_command(name="簽到資訊", description="顯示該成員的簽到資訊")
@commands.is_owner() # 管理員才能用
async def get_member_info(ctx, member: discord.Member):
await ctx.send_response("功能處理")
# 錯誤顯示
@get_member_info.error
async def get_member_info_error(ctx, error):
if isinstance(error, commands.NoPrivateMessage):
await ctx.send_response("這個只能在伺服器裡才能用")
else:
await ctx.send_response("你沒有權限喔www不可以偷偷來")
@Bot.command(name="簽到資訊")
@commands.is_owner() # 管理員才能用
async def get_member_info_command(ctx: commands.Context):
if (ctx.can_send()):
await ctx.author.send("已上傳")
# eventMgr.py
@client.event
async def on_command_error(ctx, error):
if isinstance(error, commands.MissingPermissions):
await ctx.author.send("你沒有權限喔www不可以偷偷來")
elif isinstance(error, commands.BotMissingPermissions):
await ctx.author.send("你沒有權限喔www不可以偷偷來Bot")
elif isinstance(error, commands.NotOwner):
await ctx.author.send("你沒有權限喔www不可以偷偷來")
在測試的期間,想必很多人看到了錯誤時出現的內容「只有您才能看到這些」,
而我也想要!!所以找到了處理方法。
將 send_response 加入參數 ephemeral = True,
ephemeral 目前只有 ctx:discord.ApplicationContext 才有類似的參數,
但@command 沒有
await ctx.send_response("你沒有權限喔www不可以偷偷來", ephemeral=True)