message.content.replace() 不替换字符串的 “ .removedir”

message.content.replace() not replacing the " .removedir" of the string

提问人:NotReaL 提问时间:11/16/2023 更新时间:11/16/2023 访问量:36

问:

我正在为 discord 机器人发出删除目录的命令。但是,我正在尝试获取用户传递的路径,然后将命令替换为空白,以便仅存在该路径。这显然不起作用,并且由于某种原因,它也不会发送带有结果的嵌入。

命令代码:

if message.content.startswith(".deletedir"):
        await message.delete()
        try:
            os.rmdir(message.content.replace(".deletedir ", ""))
        except Exception as e:
            print(e)
            embed = discord.Embed(title="Delete Directory", description="Failed to delete directory. Usage: ``.deletedir <FULL DIRECTORY PATH>``\nIf you want to delete files use the ``.delete`` command!", color=0x00ff00)
            await message.channel.send(embed=embed)
            return
        embed = discord.Embed(title="Delete Directory",description=f"Directory {message.content.replace('.deletedir ', '')} deleted.", color=0x00ff00)
        await message.channel.send(embed=embed)

我尝试将替换字符串保存到变量中,然后将其粘贴到 os.rmdir() 中,我也尝试在命令上使用 .split(“ ”)[1]。

Python 字符串 discord.py

评论

0赞 ewokx 11/16/2023
欢迎使用 Stack Overflow。是“.deletedir”还是“.removedir”?另外,这些不会用空字符串替换 '''.deletedir “ 的实例吗?message.content.replace(".deletedir ", "")
0赞 AKX 11/16/2023
那么什么不起作用呢?什么会发生,什么不会发生?您是否尝试过打印出要删除的路径?
0赞 NotReaL 11/16/2023
打印结果:“.deletedir <路径在这里>”
0赞 ewokx 11/16/2023
首先,你需要确保你有确切的路径。其次,您需要拥有正确的权限。第三,这种脚本很危险,因为你很可能会删除你不想删除的东西。
0赞 NotReaL 11/16/2023
也是.deletedir,我的错!

答:

0赞 AKX 11/16/2023 #1

我会完全重构命令解析:

if message.content.startswith("."):
    command, rest = message.content[1:].split(None, 1)
    if command == "deletedir":
        try:
            os.rmdir(rest)
        except Exception as e:
            ...
    elif command == "something-else":
        ...