代码之家  ›  专栏  ›  技术社区  ›  user24391360

在.txt文件中存储和删除Discord UserID

  •  0
  • user24391360  · 技术社区  · 1 年前

    我需要制作一个机器人程序,将用户的UserID存储在一个txt文件中,然后在用户执行命令时删除该UserID。

    此代码查看包含所有用户的UserID的文本文件。然后,它会找到执行命令的用户的UserID-然后应该从文件中删除该用户的UserID。但是,当只应该删除一行时,该命令不起作用,因为它会删除文本文件的全部内容。我在论坛上浏览了一个小时来解决这个问题:但什么都没用。

    @client.command()
    async def unreserve(ctx):
        author = (ctx.author.id)
    
        with open('ReservedUsers.txt', 'r') as f:
            lines = f.readlines()
        with open('ReservedUsers.txt', 'w') as f:
            for line in lines:
                if line == author:
                    f.write(line)
    

    这是“ReservedUsers.txt”文件的一个示例:

    000000000000000001
    000000000000000002
    000000000000000003
    
    1 回复  |  直到 1 年前
        1
  •  0
  •   AME    1 年前

    您当前的代码将删除所有其他ID,并保留为您实际想要删除的ID。它不起作用,因为有 \n 在每一行的末尾,但您在您的 if 陈述

    更新: 这也是一个问题 ctx.author.id 是int,因此在比较中必须将其转换为 string .

    @client.command()
    async def unreserve(ctx):
        author = (ctx.author.id)
        with open(f"ReservedUsers.txt", "r") as f:
            lines = f.readlines()
        with open(f"ReservedUsers.txt", "w") as f:
            for line in lines:
                if line.strip("\n") != str(author):
                    f.write(line)