Merge branch 'master' into less-magic
This commit is contained in:
commit
80930f389c
2
.gitignore
vendored
2
.gitignore
vendored
@ -1,5 +1,7 @@
|
||||
plugins/mokubot*
|
||||
plugins/qtbot*
|
||||
plugins/mjolnir*
|
||||
plugins/antisquigbot*
|
||||
*.db
|
||||
lua-tg
|
||||
drua-tg
|
||||
|
14
bindings.lua
14
bindings.lua
@ -12,10 +12,6 @@ function bindings.sendRequest(url)
|
||||
|
||||
local dat, res = HTTPS.request(url)
|
||||
|
||||
if res ~= 200 then
|
||||
return false, res
|
||||
end
|
||||
|
||||
local tab = JSON.decode(dat)
|
||||
|
||||
if not tab.ok then
|
||||
@ -114,6 +110,16 @@ function bindings:forwardMessage(chat_id, from_chat_id, message_id, disable_noti
|
||||
|
||||
end
|
||||
|
||||
function bindings:kickChatMember(chat_id, user_id)
|
||||
local url = self.BASE_URL .. '/kickChatMember?chat_id=' .. chat_id .. '&user_id=' .. user_id
|
||||
return bindings.sendRequest(self, url)
|
||||
end
|
||||
|
||||
function bindings:unbanChatMember(chat_id, user_id)
|
||||
local url = self.BASE_URL .. '/unbanChatMember?chat_id=' .. chat_id .. '&user_id=' .. user_id
|
||||
return bindings.sendRequest(self, url)
|
||||
end
|
||||
|
||||
-- TODO: More of this.
|
||||
|
||||
function bindings:sendPhotoID(chat_id, file_id, caption, reply_to_message_id, disable_notification)
|
||||
|
30
bot.lua
30
bot.lua
@ -5,7 +5,7 @@ local instance = {}
|
||||
local bindings = require('bindings') -- Load Telegram bindings.
|
||||
local utilities = require('utilities') -- Load miscellaneous and cross-plugin functions.
|
||||
|
||||
bot.version = '3.5'
|
||||
bot.version = '3.6'
|
||||
|
||||
function bot:init() -- The function run when the bot is started or reloaded.
|
||||
|
||||
@ -44,22 +44,6 @@ function bot:init() -- The function run when the bot is started or reloaded.
|
||||
self.database.users = self.database.users or {} -- Table to cache userdata.
|
||||
self.database.users[tostring(self.info.id)] = self.info
|
||||
|
||||
-- Migration code. Remove in 3.6.
|
||||
if self.database.lastfm then
|
||||
for k,v in pairs(self.database.lastfm) do
|
||||
if not self.database.users[k] then self.database.users[k] = {} end
|
||||
self.database.users[k].lastfm = v
|
||||
end
|
||||
end
|
||||
|
||||
-- Migration code. Remove in 3.6.
|
||||
if self.database.nicknames then
|
||||
for k,v in pairs(self.database.nicknames) do
|
||||
if not self.database.users[k] then self.database.users[k] = {} end
|
||||
self.database.users[k].nickname = v
|
||||
end
|
||||
end
|
||||
|
||||
end
|
||||
|
||||
function bot:on_msg_receive(msg) -- The fn run whenever a message is received.
|
||||
@ -77,25 +61,17 @@ function bot:on_msg_receive(msg) -- The fn run whenever a message is received.
|
||||
end
|
||||
|
||||
if msg.date < os.time() - 5 then return end -- Do not process old messages.
|
||||
if not msg.text then msg.text = msg.caption or '' end
|
||||
|
||||
if msg.reply_to_message and msg.reply_to_message.caption then
|
||||
msg.reply_to_message.text = msg.reply_to_message.caption
|
||||
end -- If the replied-to message has a caption, make that its text.
|
||||
msg = utilities.enrich_message(msg)
|
||||
|
||||
if msg.text:match('^/start .+') then
|
||||
msg.text = '/' .. utilities.input(msg.text)
|
||||
msg.text_lower = msg.text:lower()
|
||||
end
|
||||
|
||||
for _,v in ipairs(self.plugins) do
|
||||
for _,w in pairs(v.triggers) do
|
||||
if string.match(msg.text:lower(), w) then
|
||||
-- a few shortcuts
|
||||
msg.chat.id_str = tostring(msg.chat.id)
|
||||
msg.from.id_str = tostring(msg.from.id)
|
||||
msg.text_lower = msg.text:lower()
|
||||
msg.from.name = utilities.build_name(msg.from.first_name, msg.from.last_name)
|
||||
|
||||
local success, result = pcall(function()
|
||||
return v.action(self, msg)
|
||||
end)
|
||||
|
@ -2,12 +2,12 @@ return {
|
||||
|
||||
-- Your authorization token from the botfather.
|
||||
bot_api_key = '',
|
||||
-- Your Telegram ID.
|
||||
admin = 00000000,
|
||||
-- Differences, in seconds, between your time and UTC.
|
||||
time_offset = 0,
|
||||
-- Two-letter language code.
|
||||
lang = 'en',
|
||||
-- Your Telegram ID.
|
||||
admin = 00000000,
|
||||
-- The channel, group, or user to send error reports to.
|
||||
-- If this is not set, errors will be printed to the console.
|
||||
log_chat = nil,
|
||||
|
@ -47,15 +47,6 @@ function administration:init()
|
||||
flood = {}
|
||||
}
|
||||
|
||||
-- Migration code: Remove this in v1.8.
|
||||
-- Most recent group activity is now cached for group listings.
|
||||
if not self.database.administration.activity then
|
||||
self.database.administration.activity = {}
|
||||
for k,_ in pairs(self.database.administration.groups) do
|
||||
table.insert(self.database.administration.activity, k)
|
||||
end
|
||||
end
|
||||
|
||||
-- Migration code: Remove this in v1.9.
|
||||
-- Groups have single governors now.
|
||||
for _,group in pairs(self.database.administration.groups) do
|
||||
@ -1011,6 +1002,7 @@ function administration.init_command(self_)
|
||||
photo = drua.get_photo(msg.chat.id),
|
||||
founded = os.time()
|
||||
}
|
||||
administration:update_desc(self, msg.chat.id)
|
||||
for i,_ in ipairs(administration.flags) do
|
||||
self.database.administration.groups[msg.chat.id_str].flags[i] = false
|
||||
end
|
||||
|
@ -43,10 +43,6 @@ local yesno_answers = {
|
||||
|
||||
function eightball:action(msg)
|
||||
|
||||
if msg.reply_to_message then
|
||||
msg = msg.reply_to_message
|
||||
end
|
||||
|
||||
local message
|
||||
|
||||
if msg.text_lower:match('y/n%p?$') then
|
||||
|
@ -12,23 +12,26 @@ function hearthstone:init()
|
||||
|
||||
print('Downloading Hearthstone database...')
|
||||
|
||||
self.database.hearthstone = {
|
||||
expiration = os.time() + 600000
|
||||
}
|
||||
-- This stuff doesn't play well with lua-sec. Disable it for now; hack in curl.
|
||||
--local jstr, res = HTTPS.request('https://api.hearthstonejson.com/v1/latest/enUS/cards.json')
|
||||
--if res ~= 200 then
|
||||
-- print('Error connecting to hearthstonejson.com.')
|
||||
-- print('hearthstone.lua will not be enabled.')
|
||||
-- return
|
||||
--end
|
||||
--local jdat = JSON.decode(jstr)
|
||||
|
||||
local jstr, res = HTTPS.request('http://hearthstonejson.com/json/AllSets.json')
|
||||
if res ~= 200 then
|
||||
local s = io.popen('curl -s https://api.hearthstonejson.com/v1/latest/enUS/cards.json'):read('*all')
|
||||
local d = JSON.decode(s)
|
||||
|
||||
if not d then
|
||||
print('Error connecting to hearthstonejson.com.')
|
||||
print('hearthstone.lua will not be enabled.')
|
||||
return
|
||||
end
|
||||
local jdat = JSON.decode(jstr)
|
||||
|
||||
for _,v in pairs(jdat) do
|
||||
for _,val in pairs(v) do
|
||||
table.insert(self.database.hearthstone, val)
|
||||
end
|
||||
end
|
||||
self.database.hearthstone = d
|
||||
self.database.hearthstone.expiration = os.time() + 600000
|
||||
|
||||
print('Download complete! It will be stored for a week.')
|
||||
|
||||
|
@ -171,7 +171,7 @@ function utilities:user_from_message(msg)
|
||||
if msg.reply_to_message then
|
||||
target = msg.reply_to_message.from
|
||||
elseif input and tonumber(input) then
|
||||
target.id = input
|
||||
target.id = tonumber(input)
|
||||
if self.database.users[input] then
|
||||
for k,v in pairs(self.database.users[input]) do
|
||||
target[k] = v
|
||||
@ -300,3 +300,34 @@ function utilities.with_http_timeout(timeout, fun)
|
||||
fun()
|
||||
HTTP.TIMEOUT = original
|
||||
end
|
||||
|
||||
function utilities.enrich_user(user)
|
||||
user.id_str = tostring(user.id)
|
||||
user.name = utilities.build_name(user.first_name, user.last_name)
|
||||
return user
|
||||
end
|
||||
|
||||
function utilities.enrich_message(msg)
|
||||
if not msg.text then msg.text = msg.caption or '' end
|
||||
msg.text_lower = msg.text:lower()
|
||||
msg.from = utilities.enrich_user(msg.from)
|
||||
msg.chat.id_str = tostring(msg.chat.id)
|
||||
if msg.reply_to_message then
|
||||
if not msg.reply_to_message.text then
|
||||
msg.reply_to_message.text = msg.reply_to_message.caption or ''
|
||||
end
|
||||
msg.reply_to_message.text_lower = msg.reply_to_message.text:lower()
|
||||
msg.reply_to_message.from = utilities.enrich_user(msg.reply_to_message.from)
|
||||
msg.reply_to_message.chat.id_str = tostring(msg.reply_to_message.chat.id)
|
||||
end
|
||||
if msg.forward_from then
|
||||
msg.forward_from = utilities.enrich_user(msg.forward_from)
|
||||
end
|
||||
if msg.new_chat_participant then
|
||||
msg.new_chat_participant = utilities.enrich_user(msg.new_chat_participant)
|
||||
end
|
||||
if msg.left_chat_participant then
|
||||
msg.left_chat_participant = utilities.enrich_user(msg.left_chat_participant)
|
||||
end
|
||||
return msg
|
||||
end
|
||||
|
Reference in New Issue
Block a user