2024-04-16 09:48:05 +02:00
|
|
|
--- Copyright (C) 2024 The Qt Company Ltd.
|
|
|
|
|
--- SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only WITH Qt-GPL-exception-1.0
|
|
|
|
|
|
|
|
|
|
local function fetchJoke()
|
|
|
|
|
print("Fetching ...")
|
|
|
|
|
|
|
|
|
|
local a = require("async")
|
|
|
|
|
local fetch = require("Fetch").fetch
|
|
|
|
|
local utils = require("Utils")
|
|
|
|
|
local mm = require("MessageManager")
|
|
|
|
|
|
|
|
|
|
local r = a.wait(fetch({ url = "https://official-joke-api.appspot.com/random_joke", convertToTable = true }))
|
|
|
|
|
if (type(r) == "table") then
|
|
|
|
|
mm.writeDisrupting(r.setup)
|
|
|
|
|
a.wait(utils.waitms(1000))
|
|
|
|
|
mm.writeSilently(".")
|
|
|
|
|
a.wait(utils.waitms(1000))
|
|
|
|
|
mm.writeSilently(".")
|
|
|
|
|
a.wait(utils.waitms(1000))
|
|
|
|
|
mm.writeSilently(".")
|
|
|
|
|
a.wait(utils.waitms(1000))
|
|
|
|
|
mm.writeDisrupting(r.punchline)
|
|
|
|
|
else
|
|
|
|
|
print("echo Error fetching: " .. r)
|
|
|
|
|
end
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
local function fetchJokeSafe()
|
|
|
|
|
local ok, err = pcall(fetchJoke)
|
|
|
|
|
if not ok then
|
|
|
|
|
print("echo Error fetching: " .. err)
|
|
|
|
|
end
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
local function setup()
|
|
|
|
|
local a = require("async")
|
|
|
|
|
Action = require("Action")
|
|
|
|
|
Action.create("Simple.joke", {
|
|
|
|
|
text = "Tell a joke",
|
|
|
|
|
onTrigger = function() a.sync(fetchJokeSafe)() end,
|
|
|
|
|
defaultKeySequences = { "Meta+Ctrl+Shift+J", "Ctrl+Shift+Alt+J" },
|
|
|
|
|
})
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
return {
|
|
|
|
|
Name = "Tell A Joke",
|
|
|
|
|
Version = "1.0.0",
|
|
|
|
|
CompatVersion = "1.0.0",
|
|
|
|
|
Vendor = "The Qt Company",
|
|
|
|
|
Category = "Fun",
|
|
|
|
|
Description = "This plugin adds an action that tells a joke.",
|
|
|
|
|
Dependencies = {
|
2024-06-13 07:39:17 +02:00
|
|
|
{ Name = "Lua", Version = "14.0.0" },
|
2024-04-16 09:48:05 +02:00
|
|
|
},
|
|
|
|
|
setup = setup,
|
|
|
|
|
} --[[@as QtcPlugin]]
|