はじめに
discord Botを開発していて、チャンネルからメッセージが取得できないため、Permissionを取得する方法を調べました。
Permission取得方法
※TOKEN情報は.envなどに持たせて使用してください。
import discord # DiscordのAPIライブラリをインポートします
import os # OSの機能にアクセスするためのライブラリをインポートします
# デフォルトのIntentsオブジェクトを取得します。IntentsはDiscordから受け取るイベントのタイプを制御します
intents = discord.Intents.default()
intents.messages = True
intents.guilds = True
# Discordクライアントを初期化します。このクライアントはDiscordサーバーとの通信を処理します
client = discord.Client(intents=intents)
# 環境変数からDiscordのBotトークンを取得します。このトークンはBotをDiscord APIに認証するために使用されます
my_secret = os.environ['TOKEN']
# メッセージが送信された際に、呼び出されます。
@client.event
async def on_message(message):
# メッセージがギルドからのものかどうかを確認します
if message.guild is not None:
permissions = message.channel.permissions_for(message.guild.me)
# permissionsオブジェクトのすべての属性と値を出力します
for attr in dir(permissions):
if not attr.startswith("__"):
print(f"{attr}: {getattr(permissions, attr)}")
# 取得したBotトークンを使用して、クライアントをDiscordに接続します
client.run(my_secret)
上記のソースを実行して取得したものをきれいにしました。
Permission | Value |
---|---|
add_reactions | True |
administrator | False |
attach_files | True |
ban_members | False |
change_nickname | True |
connect | False |
create_instant_invite | True |
create_private_threads | True |
create_public_threads | True |
deafen_members | False |
embed_links | True |
external_emojis | True |
external_stickers | True |
kick_members | False |
manage_channels | False |
manage_emojis | False |
manage_emojis_and_stickers | False |
manage_events | False |
manage_guild | False |
manage_messages | True |
manage_nicknames | False |
manage_permissions | False |
manage_roles | False |
manage_threads | False |
manage_webhooks | True |
mention_everyone | True |
moderate_members | False |
move_members | False |
mute_members | False |
read_message_history | True |
read_messages | True |
request_to_speak | True |
send_messages | True |
send_messages_in_threads | True |
send_tts_messages | False |
speak | False |
use_application_commands | True |
use_external_emojis | True |
use_external_stickers | True |
use_voice_activation | False |
view_audit_log | False |
view_channel | True |
view_guild_insights | False |
最後に
うまくいかなかったら、Permissionを調べてきましょう
参考