前提・実現したいこと
DiscordBotでkick、ban、unbanの機能を追加しようとしているのですがエラーが起こり解決できませんでした。
写真のように処理後に送信されるメッセージは送られてきているので悩んでいます。
コードの!user info [UserName]のみ正常に機能し、ユーザー情報はしっかり送信されてきます。
発生している問題・エラーメッセージ
Ignoring exception in command user kick: Traceback (most recent call last): File "C:\Users\user\AppData\Local\Programs\Python\Python38\lib\site-packages\discord\ext\commands\core.py", line 85, in wrapped ret = await coro(*args, **kwargs) File "p:\Discord bot\多機能bot\cogs\userinfocog.py", line 36, in kick await member.kick(reason=reason) File "C:\Users\user\AppData\Local\Programs\Python\Python38\lib\site-packages\discord\member.py", line 524, in kick await self.guild.kick(self, reason=reason) File "C:\Users\user\AppData\Local\Programs\Python\Python38\lib\site-packages\discord\guild.py", line 1886, in kick await self._state.http.kick(user.id, self.id, reason=reason) File "C:\Users\user\AppData\Local\Programs\Python\Python38\lib\site-packages\discord\http.py", line 241, in request raise Forbidden(r, data) discord.errors.Forbidden: 403 Forbidden (error code: 50013): Missing Permissions The above exception was the direct cause of the following exception: Traceback (most recent call last): File "C:\Users\user\AppData\Local\Programs\Python\Python38\lib\site-packages\discord\ext\commands\bot.py", line 902, in invoke await ctx.command.invoke(ctx) File "C:\Users\user\AppData\Local\Programs\Python\Python38\lib\site-packages\discord\ext\commands\core.py", line 1340, in invoke await ctx.invoked_subcommand.invoke(ctx) File "C:\Users\user\AppData\Local\Programs\Python\Python38\lib\site-packages\discord\ext\commands\core.py", line 864, in invoke await injected(*ctx.args, **ctx.kwargs) File "C:\Users\user\AppData\Local\Programs\Python\Python38\lib\site-packages\discord\ext\commands\core.py", line 94, in wrapped raise CommandInvokeError(exc) from exc discord.ext.commands.errors.CommandInvokeError: Command raised an exception: Forbidden: 403 Forbidden (error code: 50013): Missing Permissions
該当のソースコード
main側
lang
1USER = [ 2 'cogs.userinfocog' 3 4class MyBot(commands.Bot): 5 def __init__(self, command_prefix): 6 super().__init__(command_prefix) 7 8 for cog in USER: 9 try: 10 self.load_extension(cog) 11 except Exception: 12 traceback.print_exc() 13 14 async def on_ready(self): 15 print("ログインしました") 16 print('-------------') 17 await bot.change_presence(activity=presence) 18 19 20if __name__ == '__main__': 21 bot = MyBot(command_prefix='!') 22 bot.run(config.TOKEN) 23]
Cog側
lang
1class UserCog(commands.Cog): 2 def __int__(self, bot): 3 self.bot = bot 4 5 @commands.group() 6 async def user(self, ctx): 7 if ctx.invoked_subcommand is None: 8 await ctx.send('メインコマンドの後にサブコマンドが必要です。') 9 10 @user.command() 11 async def info(self, ctx, member : discord.Member): 12 users = discord.Embed(title=f'{member}の詳細', description='詳細', color=discord.Color.orange()) 13 users.set_author(name=ctx.author, icon_url=ctx.author.avatar_url) 14 users.set_thumbnail(url=member.avatar_url) 15 users.add_field(name='名前', value=f'**{member.display_name}#{member.discriminator}**') 16 users.add_field(name='あなたはBot?', value=member.bot) 17 users.add_field(name='作成時間', value=member.created_at, inline=False) 18 users.add_field(name='サーバーに参加した時間', value=member.joined_at) 19 await ctx.send(embed=users) 20 21 @user.command() 22 @commands.has_permissions(kick_members=True) 23 async def kick(self, ctx, member : discord.Member, reason=None): 24 kick = discord.Embed(title='メンバーをキックしました', description='Kickしたメンバーにまた来てもらうには再招待してください', color=discord.Color.red()) 25 kick.add_field(name='執行人', value=f'{ctx.author.mention}') 26 kick.add_field(name='Kickされた人', value=f'{member.mention}') 27 kick.set_thumbnail(url=member.avatar_url) 28 await ctx.send(embed=kick) 29 await member.kick(reason=reason) 30 31 @user.command() 32 @commands.has_permissions(ban_members=True) 33 async def ban(ctx, member : discord.Member, reason=None): 34 ban = discord.Embed(title='メンバーをBANしました', description='BANしたメンバーにまた来てもらうにはUNBANをし再招待してください', color=discord.Color.red()) 35 ban.add_field(name='執行人', value=f'{ctx.author.mention}') 36 ban.add_field(name='Kickされた人', value=f'{member.mention}') 37 ban.set_thumbnail(url=member.avatar_url) 38 await ctx.send(embed=ban) 39 await member.ban(reason=reason) 40 41 @user.command() 42 @commands.has_permissions(ban_members=True) 43 async def unban(ctx, member : discord.Member, reason=None): 44 unban=discord.Embed(title="BANを解除しました", color=0xff0000) 45 unban.set_thumbnail(url=user.avatar_url) 46 unban.add_field(name="対象", value=user, inline=False) 47 unban.add_field(name="実行", value=ctx.author, inline=False) 48 await user.unban() 49 await ctx.channel.send(embed=unban) 50 51def setup(bot): 52 bot.add_cog(UserCog(bot))
試したこと
main側のMyBotクラスに下記の文を追加して実行したが同様のエラーが出ました。
lang
1discord_intents = discord.Intents.all()
補足情報(FW/ツールのバージョンなど)
サーバーへの招待時、Administratorにチェックを入れサーバーへ招待しています。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/02/19 08:26
2021/02/19 12:53
2021/02/20 06:21
2021/02/20 12:57