Python 如何让我的机器人发送图像,以及如何创建关闭它的命令?
我试图创建一个机器人,它可以用一位老师的诙谐回答或一张图片来回复文本。然而,当我写“chungus”这个词时,机器人并没有回答任何问题。我试着在那行打印一些东西,但它不起作用。此外,我还编写了一个命令,尝试关闭bot,并在其关闭时发送文本,但这也不起作用。如果你还没弄明白的话,我是python新手 编辑:我试图为图像回复创建一个命令,所以我也编辑了代码 编辑:新错误如下所示Python 如何让我的机器人发送图像,以及如何创建关闭它的命令?,python,Python,我试图创建一个机器人,它可以用一位老师的诙谐回答或一张图片来回复文本。然而,当我写“chungus”这个词时,机器人并没有回答任何问题。我试着在那行打印一些东西,但它不起作用。此外,我还编写了一个命令,尝试关闭bot,并在其关闭时发送文本,但这也不起作用。如果你还没弄明白的话,我是python新手 编辑:我试图为图像回复创建一个命令,所以我也编辑了代码 编辑:新错误如下所示 Ignoring exception in command chungus: Traceback (most recent
Ignoring exception in command chungus:
Traceback (most recent call last):
File "C:\Users\Andrei\AppData\Local\Programs\Python\Python36\lib\site-packages\discord\ext\commands\core.py", line 85, in wrapped
ret = await coro(*args, **kwargs)
File "c:/Users/Andrei/cnvagalati/botdiscord.py", line 49, in chungus
await ctx.channel.send(file=discord.File(paul9_path))
File "C:\Users\Andrei\AppData\Local\Programs\Python\Python36\lib\site-packages\discord\file.py", line 73, in __init__
self.fp = open(fp, 'rb')
FileNotFoundError: [Errno 2] No such file or directory: 'c:/Users/Andrei/cnvagalati/botdiscord.py\\images\\paul9.jpg'
The above exception was the direct cause of the following exception:
Traceback (most recent call last):
File "C:\Users\Andrei\AppData\Local\Programs\Python\Python36\lib\site-packages\discord\ext\commands\bot.py", line 903, in invoke
await ctx.command.invoke(ctx)
File "C:\Users\Andrei\AppData\Local\Programs\Python\Python36\lib\site-packages\discord\ext\commands\core.py", line 859, in invoke
await injected(*ctx.args, **ctx.kwargs)
File "C:\Users\Andrei\AppData\Local\Programs\Python\Python36\lib\site-packages\discord\ext\commands\core.py", line 94, in wrapped
raise CommandInvokeError(exc) from exc
discord.ext.commands.errors.CommandInvokeError: Command raised an exception: FileNotFoundError: [Errno 2] No such file or directory: 'c:/Users/Andrei/cnvagalati/botdiscord.py\\images\\paul9.jpg'
编辑:文件路径:
C:\USERS\ANDREI\CNVAGALATI
├───.vscode
└───images
该错误表示当前目录中没有任何名为
paul9.jpg
的文件。这是正确的,因为您的文件位于images/
中
您需要给出相对于当前目录的正确路径
如果message.content==“chungus”:
wait message.channel.send(file=discord.file('images/paul9.png'))
印刷品(“呼呼呼呼”)
但是,这是一个相对路径,如果您不从与脚本本身相同的目录运行脚本,那么它就不是非常健壮。相反,您应该使用函数
如果您的目录结构看起来像-
C:\USERS\ANDREI\CNVAGALATI
├───.vscode
├───images
├ └───paul9.jpg
└───botdiscord.py
然后您可以像这样获得到CNVAGALATI
的路径
导入操作系统
project\u dir=os.path.dirname(\u文件\u)
现在,您需要获得图像的路径
images\u dir=os.path.join(project\u dir,'images')
现在,每当您需要图像目录中任何文件的路径时。您只需os.path.join(图像\u目录,文件名)
因此对于文件paul9.jpg
paul9_path=os.path.join(images_dir,'paul9.jpg')
您现在可以使用将此传递到
discord.File
错误意味着pal9.jpg
在当前目录中不存在。除非你告诉我们完整的目录,否则我们帮不了你structure@Chase我的目录结构是C:/Users/Andrei/cnvagalati/botdiscord.py/paul.jpg请准确地发布文件路径。这是非常重要的。您发布了一个文件的路径,该文件甚至没有命名为paul9.jpg
,甚至没有-您的路径表明paul.jpg
文件位于名为botdiscord.py
的文件夹中,文件夹不能有该名称。请看我的坏消息这是路径:``卷操作系统的文件夹路径列表卷序列号是E235-1A8C:。└───.vscode``请将完整结构粘贴到您的帖子中。没有评论。在postyeah的正下方有一个edit
按钮。你说得对,但我仍然有一个问题,我该如何调用cnvagalati文件夹?就像我像字符串一样编写,或者只是project\u dir=os.path.dirname(cnvagalati)
?请注意,\uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu。因此,如果您使用os.path.dirname(\uuuu file\uuuuuu)
,它会直接为您提供CNVAGALATI
文件夹的路径。你不必做任何其他事情project_dir
是通往该文件夹的路径哦,对了,我实际上是在问如何写那行代码,我以为我必须用cnvagalati替换\uuuu file\uuuuuuuu
,我试过了,但仍然得到同样的错误。也许我应该给你一个up@andrei4563请发布错误消息,它在什么路径中查找?
C:\USERS\ANDREI\CNVAGALATI
├───.vscode
├───images
├ └───paul9.jpg
└───botdiscord.py