-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathnotify.py
67 lines (54 loc) · 2.14 KB
/
notify.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
import discord
from dotenv import load_dotenv
import os
load_dotenv()
DISCORD_TOKEN = os.environ['DISCORD_TOKEN']
client = discord.Client()
"""
勉強会を通知するメッセージの message_id がどれを指すものかを判定する必要がある
勉強会ごとにroleが定まっている。(無いならroleを作成する)
勉強会メッセージにリアクションした人にroleを付与する
scrape.py: Djangoから勉強会をスクレイピングしてmessageをdiscord内に送る
^
| データ共有す
v
notify.py: リアクションに従ってrole(教室1,2…)を付与する
"""
@client.event
async def on_raw_reaction_add(payload):
# if payload.message_id == ID:
if True:
user_id = payload.user_id
print(payload.emoji.name)
guild_id = payload.guild_id
guild = discord.utils.find(lambda g: g.id == guild_id, client.guilds)
role = discord.utils.find(lambda r: r.name == payload.emoji.name, guild.roles)
if role is not None:
print(role.name + " was found!")
print(role.id)
member = discord.utils.find(lambda m: m.id == payload.user_id, guild.members)
role=payload.emoji.name
await member.add_roles(role)
# print("done")
#
@client.event
async def on_raw_reaction_remove(payload):
if payload.message_id == ID:
print(payload.emoji.name)
guild_id = payload.guild_id
guild = discord.utils.find(lambda g: g.id == guild_id, client.guilds)
role = discord.utils.find(lambda r: r.name == payload.emoji.name, guild.roles)
if role is not None:
member = discord.utils.find(lambda m: m.id == payload.user_id, guild.members)
await member.remove_roles(role)
print("done")
pass
@client.event
async def on_ready():
print("Botは正常に起動しました!")
print(client.user.name) # ボットの名前
print(client.user.id) # ボットのID
print(discord.__version__) # discord.pyのバージョン
print('------')
await client.change_presence(activity=discord.Game(name="役職を管理!"))
client.run(DISCORD_TOKEN)