Discord.py Bot 将文件发送到 Discord 频道
Posted
技术标签:
【中文标题】Discord.py Bot 将文件发送到 Discord 频道【英文标题】:Discord.py Bot sending file to Discord Channel 【发布时间】:2018-11-24 09:40:33 【问题描述】:我正在尝试让我的 discord 机器人向我的 discord 服务器发送一个 jpg 文件,但我不断收到一个错误,这似乎很罕见,因为我在互联网上找不到任何解决方案...
错误是... discord.ext.commands.errors.CommandInvokeError:命令引发异常:ClientRequestError:无法为https://discordapp.com/api/v6/channels/454374995758678029/messages写入请求正文
我的进口是
import time
import discord
from discord.ext import commands
from discord.ext.commands import Bot
import asyncio
我将提取的与错误相关的代码是
@bot.command(pass_context = True)
async def image(ctx):
await bot.send_file(ctx.message.channel, open('halogen.jpg'))
我只是缺少导入还是我的代码存在实际问题?
谢谢大家
【问题讨论】:
旁注:将open(...)
传递给函数通常是一个坏主意,因为该图像可能永远不会关闭,因此如果多次运行此命令,您可能会泄漏文件句柄并最终使您的机器人崩溃.
乔希,你是对的......我摆脱了开放,我的代码立即工作......总是小事
您应该以'rb'
模式打开您的对象。您也可以只传递文件的路径而不是文件对象。见send_file
documentation
【参考方案1】:
我正在研究同样的事情,我发现这很有效:
await ctx.send(file=discord.File(r'c:\location\of\the_file_to\send.png'))
这是我找到它的地方:link
【讨论】:
【参考方案2】:尝试这样做。
@bot.command(pass_context=True)
async def send(ctx):
area=ctx.message.channel
await bot.send_file(area, r"c:\location\of\the_file_to\send.png",filename="Hello",content="Message test")
您可以在此处参考不和谐文档link
【讨论】:
【参考方案3】:不用ctx也可以发送:
async def timer():
await client.wait_until_ready()
channel = client.get_channel(number_of_channel)
while True:
await channel.send('Working!', file=discord.File("file.txt"))
await asyncio.sleep(10)#seconds
【讨论】:
以上是关于Discord.py Bot 将文件发送到 Discord 频道的主要内容,如果未能解决你的问题,请参考以下文章
如何让 discord.py bot 发送到它被调用的服务器?
Discord Bot 响应短语(Discord.py 重写)
使用 discord.py 将已经存在的 json 文件作为嵌入发送