我是LUA的新手,并尝试用Garrys Mod学习编写这种语言。
我想从Garrys Mod聊天中获取消息并将其发送到带有webhook的Discord频道。
它有效,但我尝试用嵌入式消息扩展这个项目。我需要JSON,并使用json.lua作为库。
但是只要我发送消息,我就会检索以下错误消息:
尝试索引全局'json'(零值)
导致错误的代码如下:
json.encode({ {
["embeds"] = {
["description"] = text,
["author"] = {
["name"] = ply:Nick()
},
},
} }),
完整的代码:
AddCSLuaFile()
json = require("json")
webhookURL = "https://discordapp.com/api/webhooks/XXX"
local DiscordWebhook = DiscordWebhook or {}
hook.Add( "PlayerSay", "SendMsg", function( ply, text )
t_post = {
content = json.encode({ {
["embeds"] = {
["description"] = text,
["author"] = {
["name"] = ply:Nick()
},
},
} }),
username = "Log",
}
http.Post(webhookURL, t_post)
end )
我希望有人可以帮助我
Garry的Mod确实提供了两个与json一起工作的函数。
他们是:
util.TableToJSON( table table, boolean prettyPrint=false )
和
util.JSONToTable( string json )
没有必要导入json
,如果我没记错,甚至不可能。
对于你想要做的事,你需要将你的参数构建为一个像这样的表:
local arguments = {
["key"] = "Some value",
["42"] = "Not always the answer",
["deeper"] = {
["my_age"] = 22,
["my_name"] = getMyName()
},
["even more"] = from_some_variable
然后打电话
local args_as_json = util.TableToJSON(arguments)
现在你可以将args_as_json
传递给你
http.Post( string url, table parameters, function onSuccess=nil, function onFailure=nil, table headers={} )