我是LUA的新手,并尝试使用Garrys Mod学习这种语言的编码。
我想从Garrys Mod聊天中获取消息,并将其发送到带有Webhook的Discord频道中。
它可以工作,但是我尝试通过嵌入消息扩展此项目。我为此需要JSON,并将json.lua用作库。
但是,一旦我发送一条消息,就会检索到以下错误消息:
试图索引全局'json'(nil值)
导致错误的代码如下:
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 )
我希望有人能帮助我
答案 0 :(得分:1)
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={} )