在discord.py中获取服务器ID

时间:2020-05-09 00:18:27

标签: python python-3.x discord discord.py discord.py-rewrite

我正在尝试弄清楚如何以不一致的重写方式获取服务器ID,以便我可以在单个服务器级别上保存特定设置。反正有这样做吗?

2 个答案:

答案 0 :(得分:1)

如果要存储任何数据,我建议您使用JSON文件 只需(获取服务器(以公会重写)ID): 如果命令:

@bot.command()
async def test(ctx):
    ID = ctx.guild.id

如果事件(例如on_member_join()):

@bot.event()
async def on_member_join(member):
    ID = member.guild.id

如果您想将其保存到JSON文件中,可以:

@bot.command()
async def test(ctx):
    ID[str(ctx.guild.id)] = [content to save with specific ID]
    with open("data.json", "w") as f:
        json.dump(ID, f, indent=4)

它将dump的数据转换为JSON文件。在此文件中,外观如下:

{
    "[guild id]": "[content to save]",
}

通过这种方法,您可以节省尽可能多的钱

答案 1 :(得分:1)

如果您要从原始消息/命令中收集上下文,则可以使用ctx.guild.name返回名称,或使用ctx.guild.id返回发布该命令的行会的ID。

示例:

bot = commands.Bot(command_prefix='!')

@bot.command(name='whereami', help='print the current server name/id')
async def whereami(ctx):

    await ctx.send(f'{ctx.author.name}, you are currently in {ctx.guild.name} ({ctx.guild.id}).')