ソースを参照

added feature that makes roles_to_send message mention, not just text

tenessy0570 3 年 前
コミット
f723c69a1e
2 ファイル変更13 行追加7 行削除
  1. 2 2
      __init__.py
  2. 11 5
      utils.py

+ 2 - 2
__init__.py

@@ -36,7 +36,6 @@ class MyClient(discord.Client):
     }
 
     _roles = create_and_get_roles_dict(_emojis)
-    _roles_for_send = get_roles_for_send(_roles)
 
     async def on_ready(self):
         await on_ready_print(self)
@@ -46,7 +45,8 @@ class MyClient(discord.Client):
             if channel.name != 'bot':
                 _channel = channel
 
-        await create_message_and_add_reactions(self, _channel)
+        _roles_for_send = await get_roles_for_send(self)
+        await create_message_and_add_reactions(self, _channel, _roles_for_send)
 
     @author_is_not_bot
     @notify_if_wrong_command

+ 11 - 5
utils.py

@@ -84,8 +84,8 @@ async def get_reaction_info(payload):
     return payload.emoji, payload.member, payload.message_id
 
 
-async def create_message_and_add_reactions(self, _channel):
-    message = await _channel.send(self._roles_for_send)
+async def create_message_and_add_reactions(self, _channel, _roles_for_send):
+    message = await _channel.send(_roles_for_send)
     for key in self._emojis:
         await message.add_reaction(emoji=self._emojis[key])
 
@@ -99,13 +99,19 @@ def create_and_get_roles_dict(_emojis):
     return _roles
 
 
-def get_roles_for_send(_roles):
+async def get_roles_for_send(self):
     roles = ""
-    for key, value in _roles.items():
-        roles += f"{key} ~ @{value}\n"
+    for key, value in self._roles.items():
+        role_name = value
+        role = await _get_role_by_name(self, role_name)
+        roles += f"{key} ~ <@&{role.id}>\n"
     return roles
 
 
+async def _get_role_by_name(self, name):
+    return discord.utils.get(self.guilds[0].roles, name=name)
+
+
 async def get_role_from_payload(self, payload, channel):
     emoji, reacted_user, message_id = await get_reaction_info(payload)
     guild = channel.guild