【discordpy】リアクションを付けた人に役職を付与する

仕様

#はじめにお読みください というチャンネルのメッセージに
リアクションを付けると役職が付く。

いわゆる関門的なセキュリティ。

ソースコード

import discord  
import os  

client = discord.Client()  
token = os.environ['DISCORD_BOT_TOKEN']  

ID_CHANNEL_README = 0 # 該当のチャンネルのID  
ID_ROLE_WELCOME = 0 # 付けたい役職のID  

@client.event  
async def on_raw_reaction_add(payload):  
    channel = client.get_channel(payload.channel_id)  
    if channel.id == ID_CHANNEL_README:  
        guild = client.get_guild(payload.guild_id)  
        member = guild.get_member(payload.user_id)  
        role = guild.get_role(ID_ROLE_WELCOME)  
        await member.add_roles(role)  
        await channel.send('いらっしゃいませ!')  

client.run(token)  

固定のメッセージに対するリアクションであれば、
on_reaction_add ではなく on_raw_reaction_add を使う。
(on_reaction_add はbotのログイン前のメッセージに付くリアクションを検知できない)

コマンド打つ -> botがメッセージを出す -> リアクションを見る
という流れなら on_reaction_add の方がやりやすい。