summaryrefslogtreecommitdiff
path: root/discord/pylon.lua
diff options
context:
space:
mode:
Diffstat (limited to 'discord/pylon.lua')
-rw-r--r--discord/pylon.lua40
1 files changed, 17 insertions, 23 deletions
diff --git a/discord/pylon.lua b/discord/pylon.lua
index d38b8a7..0b50b84 100644
--- a/discord/pylon.lua
+++ b/discord/pylon.lua
@@ -1,38 +1,32 @@
-local consts = require'discord.consts'
-local opcodes = consts.opcodes
+local cqueues = require 'cqueues'
local websocket = require'http.websocket'
+local request = require'http.request'
local json = require 'dkjson'
-local Queue = require 'queue'
-local exec_webhook = require'discord.the'
-local http_request = require'http.request'
-local cqueues = require 'cqueues'
-local pylon = require 'pylon'
local pprint = require 'pprint'
+local class = require 'r.class'
+
+local BasePylon = require 'pylon'
local Channel = require 'channel'
+local consts = require 'discord.consts'
+local opcodes = consts.opcodes
+local exec_webhook = require'discord.the'
-local Discord = pylon.subclass "discord"
local API_BASE = "https://discord.com/api/v10/"
+local Discord = class.extend(BasePylon)
function Discord.init(self)
self:check_config "token"
end
local function identify_payload(token)
- local I = consts.intents
- return json.encode{
- op = opcodes.identify,
- d = {
- properties = {
- os = "wilson", browser = "wilson", device = "wilson",
- },
+ local I = consts.intents return json.encode{
+ op = opcodes.identify, d = {
+ properties = {os="wilson",browser="wilson",device="wilson"},
intents = I.guilds + I.guild_messages + I.message_content,
- token = token,
- }
- }
-end
+ token = token } } end
function Discord._req_get(self, url)
- local req = http_request.new_from_uri(API_BASE..url)
+ local req = request.new_from_uri(API_BASE..url)
req.headers:upsert('content-type','application/json')
req.headers:upsert(':method','GET')
req.headers:upsert('authorization','Bot '..self.token)
@@ -40,7 +34,7 @@ function Discord._req_get(self, url)
local head,body = assert(req:go())
local status = head:get':status'
assert(status:sub(1,1)=='2','status was '..status)
- return body:get_body_as_string()
+ return assert(json.decode(body:get_body_as_string()))
end
function Discord._connect(self)
@@ -53,7 +47,7 @@ function Discord._connect(self)
pprint('I AM ',me)
end
-function Discord._heartbeat(self, interval_ms)
+function Discord._heartbeating(self, interval_ms)
local interval = interval_ms / 1000
cqueues.sleep(interval * math.random())
while true do
@@ -76,7 +70,7 @@ function Discord.recving(self)
if event.s then self.sequence_number = event.s end
if event.op == opcodes.hello then
- self.cq:wrap(self._heartbeat, self, event.d.heartbeat_interval)
+ self.cq:wrap(self._heartbeating, self, event.d.heartbeat_interval)
elseif event.op == opcodes.dispatch then
self:handle_dispatch(event)
end