You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

WebService::Discord::Webhook模块上传文件报错,求正确调用示例

解决WebService::Discord::Webhook发送带文件消息的错误

错误原因分析

  • 第一次调用的哈希结构不符合模块要求:该模块期望file参数是包含name和data的哈希引用,而非单独拆分的file和data平键,Discord API无法识别这种扁平结构,因此返回400请求错误。
  • 第二次调用的哈希声明语法错误:%NewsHash = { ... }是错误写法,Perl中哈希变量赋值需用括号(),{}创建的是匿名哈希引用,这样会导致哈希中仅存在一个无效键值对,传递给execute时自然缺失必要参数,触发参数错误提示。

正确调用示例

方式1:传递哈希引用

# 构造符合要求的哈希结构
my %news_data = (
    content => "News Report - $CurDate",
    file    => {
        name => "News.txt",
        data => $file_content  # 直接使用变量,无需额外加引号
    }
);

# 将哈希引用传入execute方法
$webhook->execute( \%news_data );

方式2:直接传递哈希键值对列表

# 直接传递键值对,无需提前声明哈希变量
$webhook->execute(
    content => "News Report - $CurDate",
    file    => {
        name => "News.txt",
        data => $file_content
    }
);

仅发送文件(无文本内容)

如果不需要附带文本内容,仅发送文件:

$webhook->execute(
    file => {
        name => "News.txt",
        data => $file_content
    }
);

注意事项

  • $file_content需为文件的原始内容(文本或二进制),若从本地文件读取,建议用binmode打开文件,避免换行符编码转换问题。
  • 确保Discord Webhook具备发送文件的权限,且文件大小不超过Discord限制(通常为8MB)。

内容的提问来源于stack exchange,提问作者Marisa Giancarla

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.09 06:15:17