Discrd.py python 3.6 用户请求加入-离开频道

Discrd.py python 3.6 user requested Join-leave channel

我正在制作一个具有加入-离开消息的机器人,但我需要对其进行设置,以便用户可以发送指定他们希望将消息发布到的频道。

示例: 用户:.joinleave Bot:请发送您希望发送加入-离开消息的频道 ID。 用户:[频道 ID] 机器人:谢谢!加入-离开消息将发布在[Channel-ID]

我目前拥有的:

   @client.event
   async def on_member_join(member):
     role = discord.utils.get(member.server.roles, name='Member')
     await client.add_roles(member, role)
     embed = discord.Embed(title="{}'s info".format(member.name), description="New Member!!!", color='Blue')
     embed.add_field(name="Name", value=member.name, inline=True)
     embed.add_field(name="ID", value=member.id, inline=True)
     embed.add_field(name="Status", value=member.status, inline=True)
     embed.add_field(name="Roles", value=member.top_role)
     embed.add_field(name="Joined", value=member.joined_at)
     embed.add_field(name="Created", value=member.created_at)
     embed.set_thumbnail(url=member.avatar_url)
     inlul = client.get_channel("")

     await client.send_message(inlul, embed=embed)

我想我会发出一个命令“.joinleave”,这就是他们输入频道 ID 的地方。我只是不知道如何从多个服务器保存该信息,并且每个服务器都不同。然后传递给@client.event.

您需要全局 dictionary variable that uses the server ID as the keys and the channel ID as the values. The problem is saving it to storage。我有两个解决方案。

一个文件

创建一个名为server_channels.txt 之类的文件,并为每个服务器创建一行。首先,它会显示服务器 ID,然后是频道 ID。它看起来像这样:

[server id 1] [channel id 1] # just replace each of these
[server id 2] [channel id 2]
...

您需要在机器人启动时解析此文件并将其放入字典中。每当字典有更新时,您还需要更新文件。

多个文件

与其读取整个文件,不如创建一个名为 server_channels 或其他名称的目录。它将包含每个服务器的文件。文件的名称是服务器 ID,文件将包含通道 ID。