diff --git a/otouto/plugins/chatter.lua b/otouto/plugins/chatter.lua
deleted file mode 100644
index 1e60875..0000000
--- a/otouto/plugins/chatter.lua
+++ /dev/null
@@ -1,80 +0,0 @@
- -- Put this absolutely at the end, even after greetings.lua.
-
-local chatter = {}
-
-local HTTP = require('socket.http')
-local URL = require('socket.url')
-local JSON = require('dkjson')
-local bindings = require('otouto.bindings')
-local utilities = require('otouto.utilities')
-
-function chatter:init(config)
- if not config.simsimi_key then
- print('Missing config value: simsimi_key.')
- print('chatter.lua will not be enabled.')
- return
- end
-
- chatter.triggers = {
- ''
- }
-end
-
-chatter.base_url = 'http://%sapi.simsimi.com/request.p?key=%s&lc=%s&ft=1.0&text=%s'
-
-function chatter:action(msg, config)
-
- if msg.text == '' then return true end
-
- if (
- not (
- msg.text_lower:match('^'..self.info.first_name:lower()..',')
- or msg.text_lower:match('^@'..self.info.username:lower()..',')
- or msg.from.id == msg.chat.id
- --Uncomment the following line for Al Gore-like conversation.
- --or (msg.reply_to_message and msg.reply_to_message.from.id == self.info.id)
- )
- or msg.text:match('^'..config.cmd_pat)
- or msg.text == ''
- ) then
- return true
- end
-
- bindings.sendChatAction(self, { action = 'typing' } )
-
- local input = msg.text_lower:gsub(self.info.first_name, 'simsimi')
- input = input:gsub('@'..self.info.username, 'simsimi')
-
- local sandbox = config.simsimi_trial and 'sandbox.' or ''
-
- local url = chatter.base_url:format(sandbox, config.simsimi_key, config.lang, URL.escape(input))
-
- local jstr, res = HTTP.request(url)
- if res ~= 200 then
- utilities.send_message(self, msg.chat.id, config.errors.chatter_connection)
- return
- end
-
- local jdat = JSON.decode(jstr)
- if not jdat.response or jdat.response:match('^I HAVE NO RESPONSE.') then
- utilities.send_message(self, msg.chat.id, config.errors.chatter_response)
- return
- end
- local output = jdat.response
-
- -- Clean up the response here.
- output = utilities.trim(output)
- -- Simsimi will often refer to itself. Replace "simsimi" with the bot name.
- output = output:gsub('%aimi?%aimi?', self.info.first_name)
- -- Self-explanatory.
- output = output:gsub('USER', msg.from.first_name)
- -- Capitalize the first letter.
- output = output:gsub('^%l', string.upper)
- -- Add a period if there is no punctuation.
- output = output:gsub('%P$', '%1.')
-
- utilities.send_message(self, msg.chat.id, output)
-
-end
-
-return chatter
diff --git a/otouto/plugins/commit.lua b/otouto/plugins/commit.lua
deleted file mode 100644
index 0701385..0000000
--- a/otouto/plugins/commit.lua
+++ /dev/null
@@ -1,430 +0,0 @@
- -- Commits from https://github.com/ngerakines/commitment.
-
-local commit = {}
-
-local utilities = require('otouto.utilities')
-
-commit.command = 'commit'
-commit.doc = '`Returns a commit message from whatthecommit.com.`'
-
-function commit:init(config)
- commit.triggers = utilities.triggers(self.info.username, config.cmd_pat):t('commit').table
-end
-
-local commits = {
- "One does not simply merge into master",
- "Merging the merge",
- "Another bug bites the dust",
- "de-misunderestimating",
- "Some shit.",
- "add actual words",
- "I CAN HAZ COMMENTZ.",
- "giggle.",
- "Whatever.",
- "Finished fondling.",
- "FONDLED THE CODE",
- "this is how we generate our shit.",
- "unh",
- "It works!",
- "unionfind is no longer being molested.",
- "Well, it's doing something.",
- "I'M PUSHING.",
- "Whee.",
- "Whee, good night.",
- "It'd be nice if type errors caused the compiler to issue a type error",
- "Fucking templates.",
- "I hate this fucking language.",
- "marks",
- "that coulda been bad",
- "hoo boy",
- "It was the best of times, it was the worst of times",
- "Fucking egotistical bastard. adds expandtab to vimrc",
- "if you're not using et, fuck off",
- "WHO THE FUCK CAME UP WITH MAKE?",
- "This is a basic implementation that works.",
- "By works, I meant 'doesnt work'. Works now..",
- "Last time I said it works? I was kidding. Try this.",
- "Just stop reading these for a while, ok..",
- "Give me a break, it's 2am. But it works now.",
- "Make that it works in 90% of the cases. 3:30.",
- "Ok, 5am, it works. For real.",
- "FOR REAL.",
- "I don't know what these changes are supposed to accomplish but somebody told me to make them.",
- "I don't get paid enough for this shit.",
- "fix some fucking errors",
- "first blush",
- "So my boss wanted this button ...",
- "uhhhhhh",
- "forgot we're not using a smart language",
- "include shit",
- "To those I leave behind, good luck!",
- "things occurred",
- "i dunno, maybe this works",
- "8==========D",
- "No changes made",
- "whooooooooooooooooooooooooooo",
- "clarify further the brokenness of C++. why the fuck are we using C++?",
- ".",
- "Friday 5pm",
- "changes",
- "A fix I believe, not like I tested or anything",
- "Useful text",
- "pgsql is being a pain",
- "pgsql is more strict, increase the hackiness up to 11",
- "c&p fail",
- "syntax",
- "fix",
- "just shoot me",
- "arrrggghhhhh fixed!",
- "someone fails and it isn't me",
- "totally more readable",
- "better grepping",
- "fix",
- "fix bug, for realz",
- "fix /sigh",
- "Does this work",
- "MOAR BIFURCATION",
- "bifurcation",
- "REALLY FUCKING FIXED",
- "FIX",
- "better ignores",
- "More ignore",
- "more ignores",
- "more ignores",
- "more ignores",
- "more ignores",
- "more ignores",
- "more ignored words",
- "more fixes",
- "really ignore ignored worsd",
- "fixes",
- "/sigh",
- "fix",
- "fail",
- "pointless limitation",
- "omg what have I done?",
- "added super-widget 2.0.",
- "tagging release w.t.f.",
- "I can't believe it took so long to fix this.",
- "I must have been drunk.",
- "This is why the cat shouldn't sit on my keyboard.",
- "This is why git rebase is a horrible horrible thing.",
- "ajax-loader hotness, oh yeah",
- "small is a real HTML tag, who knew.",
- "WTF is this.",
- "Do things better, faster, stronger",
- "Use a real JS construct, WTF knows why this works in chromium.",
- "Added a banner to the default admin page. Please have mercy on me =(",
- "needs more cow bell",
- "Switched off unit test X because the build had to go out now and there was no time to fix it properly.",
- "Updated",
- "I must sleep... it's working... in just three hours...",
- "I was wrong...",
- "Completed with no bugs...",
- "Fixed a little bug...",
- "Fixed a bug in NoteLineCount... not seriously...",
- "woa!! this one was really HARD!",
- "Made it to compile...",
- "changed things...",
- "touched...",
- "i think i fixed a bug...",
- "perfect...",
- "Moved something to somewhere... goodnight...",
- "oops, forgot to add the file",
- "Corrected mistakes",
- "oops",
- "oops!",
- "put code that worked where the code that didn't used to be",
- "Nothing to see here, move along",
- "I am even stupider than I thought",
- "I don't know what the hell I was thinking.",
- "fixed errors in the previous commit",
- "Committed some changes",
- "Some bugs fixed",
- "Minor updates",
- "Added missing file in previous commit",
- "bug fix",
- "typo",
- "bara bra grejjor",
- "Continued development...",
- "Does anyone read this? I'll be at the coffee shop accross the street.",
- "That's just how I roll",
- "work in progress",
- "minor changes",
- "some brief changes",
- "assorted changes",
- "lots and lots of changes",
- "another big bag of changes",
- "lots of changes after a lot of time",
- "LOTS of changes. period",
- "Test commit. Please ignore",
- "I'm just a grunt. Don't blame me for this awful PoS.",
- "I did it for the lulz!",
- "I'll explain this when I'm sober .. or revert it",
- "Obligatory placeholder commit message",
- "A long time ago, in a galaxy far far away...",
- "Fixed the build.",
- "various changes",
- "One more time, but with feeling.",
- "Handled a particular error.",
- "Fixed unnecessary bug.",
- "Removed code.",
- "Added translation.",
- "Updated build targets.",
- "Refactored configuration.",
- "Locating the required gigapixels to render...",
- "Spinning up the hamster...",
- "Shovelling coal into the server...",
- "Programming the flux capacitor",
- "The last time I tried this the monkey didn't survive. Let's hope it works better this time.",
- "I should have had a V8 this morning.",
- "640K ought to be enough for anybody",
- "pay no attention to the man behind the curtain",
- "a few bits tried to escape, but we caught them",
- "Who has two thumbs and remembers the rudiments of his linear algebra courses? Apparently, this guy.",
- "workaround for ant being a pile of fail",
- "Don't push this commit",
- "rats",
- "squash me",
- "fixed mistaken bug",
- "Final commit, ready for tagging",
- "-m \'So I hear you like commits ...\'",
- "epic",
- "need another beer",
- "Well the book was obviously wrong.",
- "lolwhat?",
- "Another commit to keep my CAN streak going.",
- "I cannot believe that it took this long to write a test for this.",
- "TDD: 1, Me: 0",
- "Yes, I was being sarcastic.",
- "Apparently works-for-me is a crappy excuse.",
- "tl;dr",
- "I would rather be playing SC2.",
- "Crap. Tonight is raid night and I am already late.",
- "I know what I am doing. Trust me.",
- "You should have trusted me.",
- "Is there an award for this?",
- "Is there an achievement for this?",
- "I'm totally adding this to epic win. +300",
- "This really should not take 19 minutes to build.",
- "fixed the israeli-palestinian conflict",
- "SHIT ===> GOLD",
- "Committing in accordance with the prophecy.",
- "It compiles! Ship it!",
- "LOL!",
- "Reticulating splines...",
- "SEXY RUSSIAN CODES WAITING FOR YOU TO CALL",
- "s/import/include/",
- "extra debug for stuff module",
- "debug line test",
- "debugo",
- "remove debug
all good",
- "debug suff",
- "more debug... who overwrote!",
- "these confounded tests drive me nuts",
- "For great justice.",
- "QuickFix.",
- "oops - thought I got that one.",
- "removed echo and die statements, lolz.",
- "somebody keeps erasing my changes.",
- "doh.",
- "pam anderson is going to love me.",
- "added security.",
- "arrgghh... damn this thing for not working.",
- "jobs... steve jobs",
- "and a comma",
- "this is my quickfix branch and i will use to do my quickfixes",
- "Fix my stupidness",
- "and so the crazy refactoring process sees the sunlight after some months in the dark!",
- "gave up and used tables.",
- "[Insert your commit message here. Be sure to make it descriptive.]",
- "Removed test case since code didn't pass QA",
- "removed tests since i can't make them green",
- "stuff",
- "more stuff",
- "Become a programmer, they said. It'll be fun, they said.",
- "Same as last commit with changes",
- "foo",
- "just checking if git is working properly...",
- "fixed some minor stuff, might need some additional work.",
- "just trolling the repo",
- "All your codebase are belong to us.",
- "Somebody set up us the bomb.",
- "should work I guess...",
- "To be honest, I do not quite remember everything I changed here today. But it is all good, I tell ya.",
- "well crap.",
- "herpderp (redux)",
- "herpderp",
- "Derp",
- "derpherp",
- "Herping the derp",
- "sometimes you just herp the derp so hard it herpderps",
- "Derp. Fix missing constant post rename",
- "Herping the fucking derp right here and now.",
- "Derp, asset redirection in dev mode",
- "mergederp",
- "Derp search/replace fuckup",
- "Herpy dooves.",
- "Derpy hooves",
- "derp, helper method rename",
- "Herping the derp derp (silly scoping error)",
- "Herp derp I left the debug in there and forgot to reset errors.",
- "Reset error count between rows. herpderp",
- "hey, what's that over there?!",
- "hey, look over there!",
- "It worked for me...",
- "Does not work.",
- "Either Hot Shit or Total Bollocks",
- "Arrrrgggg",
- "Don’t mess with Voodoo",
- "I expected something different.",
- "Todo!!!",
- "This is supposed to crash",
- "No changes after this point.",
- "I know, I know, this is not how I’m supposed to do it, but I can't think of something better.",
- "Don’t even try to refactor it.",
- "(c) Microsoft 1988",
- "Please no changes this time.",
- "Why The Fuck?",
- "We should delete this crap before shipping.",
- "Shit code!",
- "ALL SORTS OF THINGS",
- "Herpderp, shoulda check if it does really compile.",
- "I CAN HAZ PYTHON, I CAN HAZ INDENTS",
- "Major fixup.",
- "less french words",
- "breathe, =, breathe",
- "IEize",
- "this doesn't really make things faster, but I tried",
- "this should fix it",
- "forgot to save that file",
- "Glue. Match sticks. Paper. Build script!",
- "Argh! About to give up :(",
- "Blaming regex.",
- "oops",
- "it's friday",
- "yo recipes",
- "Not sure why",
- "lol digg",
- "grrrr",
- "For real, this time.",
- "Feed. You. Stuff. No time.",
- "I don't give a damn 'bout my reputation",
- "DEAL WITH IT",
- "commit",
- "tunning",
- "I really should've committed this when I finished it...",
- "It's getting hard to keep up with the crap I've trashed",
- "I honestly wish I could remember what was going on here...",
- "I must enjoy torturing myself",
- "For the sake of my sanity, just ignore this...",
- "That last commit message about silly mistakes pales in comparision to this one",
- "My bad",
- "Still can't get this right...",
- "Nitpicking about alphabetizing methods, minor OCD thing",
- "Committing fixes in the dark, seriously, who killed my power!?",
- "You can't see it, but I'm making a very angry face right now",
- "Fix the fixes",
- "It's secret!",
- "Commit committed....",
- "No time to commit.. My people need me!",
- "Something fixed",
- "I'm hungry",
- "asdfasdfasdfasdfasdfasdfadsf",
- "hmmm",
- "formatted all",
- "Replace all whitespaces with tabs.",
- "s/ / /g",
- "I'm too foo for this bar",
- "Things went wrong...",
- "??! what the ...",
- "This solves it.",
- "Working on tests (haha)",
- "fixed conflicts (LOL merge -s ours; push -f)",
- "last minute fixes.",
- "fuckup.",
- "Revert \"fuckup\".",
- "should work now.",
- "final commit.",
- "done. going to bed now.",
- "buenas those-things.",
- "Your commit is writing checks your merge can't cash.",
- "This branch is so dirty, even your mom can't clean it.",
- "wip",
- "Revert \"just testing, remember to revert\"",
- "bla",
- "harharhar",
- "restored deleted entities just to be sure",
- "added some filthy stuff",
- "bugger",
- "lol",
- "oopsie B|",
- "Copy pasta fail. still had a instead of a",
- "Now added delete for real",
- "grmbl",
- "move your body every every body",
- "Trying to fake a conflict",
- "And a commit that I don't know the reason of...",
- "ffs",
- "that's all folks",
- "Fucking submodule bull shit",
- "apparently i did something…",
- "bump to 0.0.3-dev:wq",
- "pep8 - cause I fell like doing a barrel roll",
- "pep8 fixer",
- "it is hump day _^_",
- "happy monday _ bleh _",
- "after of this commit remember do a git reset hard",
- "someday I gonna kill someone for this shit...",
- "magic, have no clue but it works",
- "I am sorry",
- "dirty hack, have a better idea ?",
- "Code was clean until manager requested to fuck it up",
- " - Temporary commit.",
- ":(:(",
- "...",
- "GIT :/",
- "stopped caring 10 commits ago",
- "Testing in progress ;)",
- "Fixed Bug",
- "Fixed errors",
- "Push poorly written test can down the road another ten years",
- "commented out failing tests",
- "I'm human",
- "TODO: write meaningful commit message",
- "Pig",
- "SOAP is a piece of shit",
- "did everything",
- "project lead is allergic to changes...",
- "making this thing actually usable.",
- "I was told to leave it alone, but I have this thing called OCD, you see",
- "Whatever will be, will be 8{",
- "It's 2015; why are we using ColdFusion?!",
- "#GrammarNazi",
- "Future self, please forgive me and don't hit me with the baseball bat again!",
- "Hide those navs, boi!",
- "Who knows...",
- "Who knows WTF?!",
- "I should get a raise for this.",
- "Done, to whoever merges this, good luck.",
- "Not one conflict, today was a good day.",
- "First Blood",
- "Fixed the fuck out of #526!",
- "I'm too old for this shit!",
- "One little whitespace gets its very own commit! Oh, life is so erratic!",
- "please dont let this be the problem",
- "good: no crash. bad: nothing happens",
- "trying",
- "trying harder",
- "i tried",
- "fml"
-}
-
-function commit:action(msg)
-
- local output = '`'..commits[math.random(#commits)]..'`'
- utilities.send_message(self, msg.chat.id, output, true, nil, true)
-
-end
-
-return commit
diff --git a/otouto/plugins/dilbert.lua b/otouto/plugins/dilbert.lua
deleted file mode 100644
index 63416a6..0000000
--- a/otouto/plugins/dilbert.lua
+++ /dev/null
@@ -1,51 +0,0 @@
-local dilbert = {}
-
-local HTTP = require('socket.http')
-local URL = require('socket.url')
-local bindings = require('otouto.bindings')
-local utilities = require('otouto.utilities')
-
-dilbert.command = 'dilbert [date]'
-
-function dilbert:init(config)
- dilbert.triggers = utilities.triggers(self.info.username, config.cmd_pat):t('dilbert', true).table
- dilbert.doc = [[```
-]]..config.cmd_pat..[[dilbert [YYYY-MM-DD]
-Returns the latest Dilbert strip or that of the provided date.
-Dates before the first strip will return the first strip. Dates after the last trip will return the last strip.
-Source: dilbert.com
-```]]
-end
-
-function dilbert:action(msg, config)
-
- bindings.sendChatAction(self, { chat_id = msg.chat.id, action = 'upload_photo' } )
-
- local input = utilities.input(msg.text)
- if not input then input = os.date('%F') end
- if not input:match('^%d%d%d%d%-%d%d%-%d%d$') then input = os.date('%F') end
-
- local url = 'http://dilbert.com/strip/' .. URL.escape(input)
- local str, res = HTTP.request(url)
- if res ~= 200 then
- utilities.send_reply(self, msg, config.errors.connection)
- return
- end
-
- local strip_filename = '/tmp/' .. input .. '.gif'
- local strip_file = io.open(strip_filename)
- if strip_file then
- strip_file:close()
- strip_file = strip_filename
- else
- local strip_url = str:match('')
- strip_file = utilities.download_file(strip_url, '/tmp/' .. input .. '.gif')
- end
-
- local strip_title = str:match('')
-
- bindings.sendPhoto(self, { chat_id = msg.chat.id, caption = strip_title }, { photo = strip_file } )
-
-end
-
-return dilbert
diff --git a/otouto/plugins/eightball.lua b/otouto/plugins/eightball.lua
deleted file mode 100644
index 5db3972..0000000
--- a/otouto/plugins/eightball.lua
+++ /dev/null
@@ -1,58 +0,0 @@
-local eightball = {}
-
-local utilities = require('otouto.utilities')
-
-eightball.command = '8ball'
-eightball.doc = '`Returns an answer from a magic 8-ball!`'
-
-function eightball:init(config)
- eightball.triggers = utilities.triggers(self.info.username, config.cmd_pat,
- {'[Yy]/[Nn]%p*$'}):t('8ball', true).table
-end
-
-local ball_answers = {
- "It is certain.",
- "It is decidedly so.",
- "Without a doubt.",
- "Yes, definitely.",
- "You may rely on it.",
- "As I see it, yes.",
- "Most likely.",
- "Outlook: good.",
- "Yes.",
- "Signs point to yes.",
- "Reply hazy try again.",
- "Ask again later.",
- "Better not tell you now.",
- "Cannot predict now.",
- "Concentrate and ask again.",
- "Don't count on it.",
- "My reply is no.",
- "My sources say no.",
- "Outlook: not so good.",
- "Very doubtful.",
- "There is a time and place for everything, but not now."
-}
-
-local yesno_answers = {
- 'Absolutely.',
- 'In your dreams.',
- 'Yes.',
- 'No.'
-}
-
-function eightball:action(msg)
-
- local output
-
- if msg.text_lower:match('y/n%p?$') then
- output = yesno_answers[math.random(#yesno_answers)]
- else
- output = ball_answers[math.random(#ball_answers)]
- end
-
- utilities.send_reply(self, msg, output)
-
-end
-
-return eightball
diff --git a/otouto/plugins/fortune.lua b/otouto/plugins/fortune.lua
deleted file mode 100644
index c47871e..0000000
--- a/otouto/plugins/fortune.lua
+++ /dev/null
@@ -1,31 +0,0 @@
- -- Requires that the "fortune" program is installed on your computer.
-
-local fortune = {}
-
-local utilities = require('otouto.utilities')
-
-function fortune:init(config)
- local s = io.popen('fortune'):read('*all')
- if s:match('not found$') then
- print('fortune is not installed on this computer.')
- print('fortune.lua will not be enabled.')
- return
- end
-
- fortune.triggers = utilities.triggers(self.info.username, config.cmd_pat):t('fortune').table
-end
-
-fortune.command = 'fortune'
-fortune.doc = '`Returns a UNIX fortune.`'
-
-function fortune:action(msg)
-
- local fortunef = io.popen('fortune')
- local output = fortunef:read('*all')
- output = '```\n' .. output .. '\n```'
- utilities.send_message(self, msg.chat.id, output, true, nil, true)
- fortunef:close()
-
-end
-
-return fortune
diff --git a/otouto/plugins/hearthstone.lua b/otouto/plugins/hearthstone.lua
deleted file mode 100644
index 6f8d075..0000000
--- a/otouto/plugins/hearthstone.lua
+++ /dev/null
@@ -1,130 +0,0 @@
- -- Plugin for the Hearthstone database provided by hearthstonejson.com.
-
-local hearthstone = {}
-
---local HTTPS = require('ssl.https')
-local JSON = require('dkjson')
-local utilities = require('otouto.utilities')
-
-function hearthstone:init(config)
- if not self.database.hearthstone or os.time() > self.database.hearthstone.expiration then
-
- print('Downloading Hearthstone database...')
-
- -- 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 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
-
- self.database.hearthstone = d
- self.database.hearthstone.expiration = os.time() + 600000
-
- print('Download complete! It will be stored for a week.')
-
- end
-
- hearthstone.triggers = utilities.triggers(self.info.username, config.cmd_pat):t('hearthstone', true):t('hs').table
- hearthstone.doc = [[```
-]]..config.cmd_pat..[[hearthstone
-Returns Hearthstone card info.
-Alias: ]]..config.cmd_pat..[[hs
-```]]
-end
-
-hearthstone.command = 'hearthstone '
-
-local function format_card(card)
-
- local ctype = card.type
- if card.race then
- ctype = card.race
- end
- if card.rarity then
- ctype = card.rarity .. ' ' .. ctype
- end
- if card.playerClass then
- ctype = ctype .. ' (' .. card.playerClass .. ')'
- elseif card.faction then
- ctype = ctype .. ' (' .. card.faction .. ')'
- end
-
- local stats
- if card.cost then
- stats = card.cost .. 'c'
- if card.attack then
- stats = stats .. ' | ' .. card.attack .. 'a'
- end
- if card.health then
- stats = stats .. ' | ' .. card.health .. 'h'
- end
- if card.durability then
- stats = stats .. ' | ' .. card.durability .. 'd'
- end
- elseif card.health then
- stats = card.health .. 'h'
- end
-
- -- unused?
- local info
- if card.text then
- info = card.text:gsub('?.->',''):gsub('%$','')
- if card.flavor then
- info = info .. '\n_' .. card.flavor .. '_'
- end
- elseif card.flavor then
- info = card.flavor
- else
- info = nil
- end
-
- local s = '*' .. card.name .. '*\n' .. ctype
- if stats then
- s = s .. '\n' .. stats
- end
- if info then
- s = s .. '\n' .. info
- end
-
- return s
-
-end
-
-function hearthstone:action(msg, config)
-
- local input = utilities.input(msg.text_lower)
- if not input then
- utilities.send_message(self, msg.chat.id, hearthstone.doc, true, msg.message_id, true)
- return
- end
-
- local output = ''
- for _,v in pairs(self.database.hearthstone) do
- if type(v) == 'table' and string.lower(v.name):match(input) then
- output = output .. format_card(v) .. '\n\n'
- end
- end
-
- output = utilities.trim(output)
- if output:len() == 0 then
- utilities.send_reply(self, msg, config.errors.results)
- return
- end
-
- utilities.send_message(self, msg.chat.id, output, true, msg.message_id, true)
-
-end
-
-return hearthstone
diff --git a/otouto/plugins/lastfm.lua b/otouto/plugins/lastfm.lua
deleted file mode 100644
index 0cc831f..0000000
--- a/otouto/plugins/lastfm.lua
+++ /dev/null
@@ -1,113 +0,0 @@
- -- TODO: Add support for librefm API.
- -- Just kidding, nobody actually uses that.
-
-local lastfm = {}
-
-local HTTP = require('socket.http')
-local URL = require('socket.url')
-local JSON = require('dkjson')
-local utilities = require('otouto.utilities')
-
-function lastfm:init(config)
- if not config.lastfm_api_key then
- print('Missing config value: lastfm_api_key.')
- print('lastfm.lua will not be enabled.')
- return
- end
-
- lastfm.triggers = utilities.triggers(self.info.username, config.cmd_pat):t('lastfm', true):t('np', true):t('fmset', true).table
- lastfm.doc = [[```
-]]..config.cmd_pat..[[np [username]
-Returns what you are or were last listening to. If you specify a username, info will be returned for that username.
-
-]]..config.cmd_pat..[[fmset
-Sets your last.fm username. Otherwise, ]]..config.cmd_pat..[[np will use your Telegram username. Use "]]..config.cmd_pat..[[fmset --" to delete it.
-```]]
-end
-
-lastfm.command = 'lastfm'
-
-function lastfm:action(msg, config)
-
- local input = utilities.input(msg.text)
- local from_id_str = tostring(msg.from.id)
- self.database.userdata[from_id_str] = self.database.userdata[from_id_str] or {}
-
- if string.match(msg.text, '^'..config.cmd_pat..'lastfm') then
- utilities.send_message(self, msg.chat.id, lastfm.doc, true, msg.message_id, true)
- return
- elseif string.match(msg.text, '^'..config.cmd_pat..'fmset') then
- if not input then
- utilities.send_message(self, msg.chat.id, lastfm.doc, true, msg.message_id, true)
- elseif input == '--' or input == utilities.char.em_dash then
- self.database.userdata[from_id_str].lastfm = nil
- utilities.send_reply(self, msg, 'Your last.fm username has been forgotten.')
- else
- self.database.userdata[from_id_str].lastfm = input
- utilities.send_reply(self, msg, 'Your last.fm username has been set to "' .. input .. '".')
- end
- return
- end
-
- local url = 'http://ws.audioscrobbler.com/2.0/?method=user.getrecenttracks&format=json&limit=1&api_key=' .. config.lastfm_api_key .. '&user='
-
- local username
- local alert = ''
- if input then
- username = input
- elseif self.database.userdata[from_id_str].lastfm then
- username = self.database.userdata[from_id_str].lastfm
- elseif msg.from.username then
- username = msg.from.username
- alert = '\n\nYour username has been set to ' .. username .. '.\nTo change it, use '..config.cmd_pat..'fmset .'
- self.database.userdata[from_id_str].lastfm = username
- else
- utilities.send_reply(self, msg, 'Please specify your last.fm username or set it with '..config.cmd_pat..'fmset.')
- return
- end
-
- url = url .. URL.escape(username)
-
- local jstr, res
- utilities.with_http_timeout(
- 1, function ()
- jstr, res = HTTP.request(url)
- end)
- if res ~= 200 then
- utilities.send_reply(self, msg, config.errors.connection)
- return
- end
-
- local jdat = JSON.decode(jstr)
- if jdat.error then
- utilities.send_reply(self, msg, 'Please specify your last.fm username or set it with '..config.cmd_pat..'fmset.')
- return
- end
-
- jdat = jdat.recenttracks.track[1] or jdat.recenttracks.track
- if not jdat then
- utilities.send_reply(self, msg, 'No history for this user.' .. alert)
- return
- end
-
- local output = input or msg.from.first_name
- output = '🎵 ' .. output
-
- if jdat['@attr'] and jdat['@attr'].nowplaying then
- output = output .. ' is currently listening to:\n'
- else
- output = output .. ' last listened to:\n'
- end
-
- local title = jdat.name or 'Unknown'
- local artist = 'Unknown'
- if jdat.artist then
- artist = jdat.artist['#text']
- end
-
- output = output .. title .. ' - ' .. artist .. alert
- utilities.send_message(self, msg.chat.id, output)
-
-end
-
-return lastfm
diff --git a/otouto/plugins/me.lua b/otouto/plugins/me.lua
deleted file mode 100644
index 771ba80..0000000
--- a/otouto/plugins/me.lua
+++ /dev/null
@@ -1,42 +0,0 @@
-local me = {}
-
-local utilities = require('otouto.utilities')
-
-function me:init(config)
- me.triggers = utilities.triggers(self.info.username, config.cmd_pat):t('me', true).table
- me.command = 'me'
- me.doc = '`Returns userdata stored by the bot.`'
-end
-
-function me:action(msg, config)
-
- local userdata = self.database.userdata[tostring(msg.from.id)] or {}
-
- if msg.from.id == config.admin then
- if msg.reply_to_message then
- userdata = self.database.userdata[tostring(msg.reply_to_message.from.id)]
- else
- local input = utilities.input(msg.text)
- if input then
- local user_id = utilities.id_from_username(self, input)
- if user_id then
- userdata = self.database.userdata[tostring(user_id)] or {}
- end
- end
- end
- end
-
- local output = ''
- for k,v in pairs(userdata) do
- output = output .. '*' .. k .. ':* `' .. tostring(v) .. '`\n'
- end
-
- if output == '' then
- output = 'There is no data stored for this user.'
- end
-
- utilities.send_message(self, msg.chat.id, output, true, nil, true)
-
-end
-
-return me
diff --git a/otouto/plugins/nick.lua b/otouto/plugins/nick.lua
deleted file mode 100644
index 1819c5c..0000000
--- a/otouto/plugins/nick.lua
+++ /dev/null
@@ -1,52 +0,0 @@
-local nick = {}
-
-local utilities = require('otouto.utilities')
-
-nick.command = 'nick '
-
-function nick:init(config)
- nick.triggers = utilities.triggers(self.info.username, config.cmd_pat):t('nick', true).table
- nick.doc = [[```
-]]..config.cmd_pat..[[nick
-Set your nickname. Use "]]..config.cmd_pat..[[nick --" to delete it.
-```]]
-end
-
-function nick:action(msg, config)
-
- local id_str, name
-
- if msg.from.id == config.admin and msg.reply_to_message then
- id_str = tostring(msg.reply_to_message.from.id)
- name = utilities.build_name(msg.reply_to_message.from.first_name, msg.reply_to_message.from.last_name)
- else
- id_str = tostring(msg.from.id)
- name = utilities.build_name(msg.from.first_name, msg.from.last_name)
- end
-
- self.database.userdata[id_str] = self.database.userdata[id_str] or {}
-
- local output
- local input = utilities.input(msg.text)
- if not input then
- if self.database.userdata[id_str].nickname then
- output = name .. '\'s nickname is "' .. self.database.userdata[id_str].nickname .. '".'
- else
- output = name .. ' currently has no nickname.'
- end
- elseif utilities.utf8_len(input) > 32 then
- output = 'The character limit for nicknames is 32.'
- elseif input == '--' or input == utilities.char.em_dash then
- self.database.userdata[id_str].nickname = nil
- output = name .. '\'s nickname has been deleted.'
- else
- input = input:gsub('\n', ' ')
- self.database.userdata[id_str].nickname = input
- output = name .. '\'s nickname has been set to "' .. input .. '".'
- end
-
- utilities.send_reply(self, msg, output)
-
-end
-
-return nick
diff --git a/otouto/plugins/notify.lua b/otouto/plugins/notify.lua
index 8530a8f..db0483e 100644
--- a/otouto/plugins/notify.lua
+++ b/otouto/plugins/notify.lua
@@ -61,7 +61,8 @@ end
function notify:action(msg, config, matches)
if not msg.from.username then
- return 'Du hast keinen Usernamen und kannst daher dieses Feature nicht nutzen. Tut mir leid!'
+ utilities.send_reply(self, msg, 'Du hast keinen Usernamen und kannst daher dieses Feature nicht nutzen. Tut mir leid!' )
+ return
end
local username = string.lower(msg.from.username)
@@ -92,7 +93,7 @@ function notify:action(msg, config, matches)
redis:sadd('notify:ls', username)
local res = utilities.send_message(self, msg.from.id, 'Du erhälst jetzt Benachrichtigungen, wenn du angesprochen wirst, nutze `/notify del` zum Deaktivieren.', true, nil, true)
if not res then
- utilities.send_reply(self, msg, 'Bitte schreibe mir [privat](http://telegram.me/' .. self.info.username .. '?start=about), um den Vorgang abzuschließen.', true)
+ utilities.send_reply(self, msg, 'Bitte schreibe mir [privat](http://telegram.me/' .. self.info.username .. '?start=notify), um den Vorgang abzuschließen.', true)
elseif msg.chat.type ~= 'private' then
utilities.send_reply(self, msg, 'Du erhälst jetzt Benachrichtigungen, wenn du angesprochen wirst, nutze `/notify del` zum Deaktivieren.', true)
end
diff --git a/otouto/plugins/patterns.lua b/otouto/plugins/patterns.lua
deleted file mode 100644
index 82eb8fd..0000000
--- a/otouto/plugins/patterns.lua
+++ /dev/null
@@ -1,33 +0,0 @@
-local patterns = {}
-
-local utilities = require('otouto.utilities')
-
-patterns.triggers = {
- '^/?s/.-/.-$'
-}
-
-function patterns:action(msg)
- if not msg.reply_to_message then return true end
- local output = msg.reply_to_message.text
- if msg.reply_to_message.from.id == self.info.id then
- output = output:gsub('Did you mean:\n"', '')
- output = output:gsub('"$', '')
- end
- local m1, m2 = msg.text:match('^/?s/(.-)/(.-)/?$')
- if not m2 then return true end
- local res
- res, output = pcall(
- function()
- return output:gsub(m1, m2)
- end
- )
- if res == false then
- utilities.send_reply(self, msg, 'Malformed pattern!')
- else
- output = output:sub(1, 4000)
- output = 'Did you mean:\n"' .. output .. '"'
- utilities.send_reply(self, msg.reply_to_message, output)
- end
-end
-
-return patterns
diff --git a/otouto/plugins/ping.lua b/otouto/plugins/ping.lua
deleted file mode 100644
index c368c33..0000000
--- a/otouto/plugins/ping.lua
+++ /dev/null
@@ -1,16 +0,0 @@
- -- Actually the simplest plugin ever!
-
-local ping = {}
-
-local utilities = require('otouto.utilities')
-
-function ping:init(config)
- ping.triggers = utilities.triggers(self.info.username, config.cmd_pat):t('ping'):t('annyong').table
-end
-
-function ping:action(msg, config)
- local output = msg.text_lower:match('^'..config.cmd_pat..'ping') and 'Pong!' or 'Annyong.'
- utilities.send_message(self, msg.chat.id, output)
-end
-
-return ping
diff --git a/otouto/plugins/pun.lua b/otouto/plugins/pun.lua
deleted file mode 100644
index fc84689..0000000
--- a/otouto/plugins/pun.lua
+++ /dev/null
@@ -1,144 +0,0 @@
-local pun = {}
-
-local utilities = require('otouto.utilities')
-
-pun.command = 'pun'
-pun.doc = '`Returns a pun.`'
-
-function pun:init(config)
- pun.triggers = utilities.triggers(self.info.username, config.cmd_pat):t('pun').table
-end
-
-local puns = {
- "The person who invented the door-knock won the No-bell prize.",
- "I couldn't work out how to fasten my seatbelt. Then it clicked.",
- "Never trust atoms; they make up everything.",
- "Singing in the shower is all fun and games until you get shampoo in your mouth - Then it becomes a soap opera.",
- "I can't believe I got fired from the calendar factory. All I did was take a day off.",
- "To the guy who invented zero: Thanks for nothing!",
- "Enough with the cripple jokes! I just can't stand them.",
- "I've accidentally swallowed some Scrabble tiles. My next crap could spell disaster.",
- "How does Moses make his tea? Hebrews it.",
- "Did you hear about the guy who got hit in the head with a can of soda? He was lucky it was a soft drink.",
- "When William joined the army he disliked the phrase 'fire at will'.",
- "There was a sign on the lawn at a rehab center that said 'Keep off the Grass'.",
- "I wondered why the baseball was getting bigger. Then it hit me.",
- "I can hear music coming out of my printer. I think the paper's jamming again.",
- "I have a few jokes about unemployed people, but none of them work",
- "Want to hear a construction joke? I'm working on it",
- "I always take a second pair of pants when I go golfing, in case I get a hole in one.",
- "I couldn't remember how to throw a boomerang, but then it came back to me.",
- "I've decided that my wifi will be my valentine. IDK, we just have this connection.",
- "A prisoner's favorite punctuation mark is the period. It marks the end of his sentence.",
- "I used to go fishing with Skrillex, but he kept dropping the bass.",
- "Two antennae met on a roof and got married. The wedding was okay, but the reception was incredible.",
- "A book just fell on my head. I've only got my shelf to blame.",
- "I dropped my steak on the floor. Now it's ground beef.",
- "I used to have a fear of hurdles, but I got over it.",
- "The outcome of war does not prove who is right, but only who is left.",
- "Darth Vader tries not to burn his food, but it always comes out a little on the dark side.",
- "The store keeps calling me to buy more furniture, but all I wanted was a one night stand.",
- "This girl said she recognized me from the vegetarian club, but I'd never met herbivore.",
- "Police arrested two kids yesterday, one was drinking battery acid, the other was eating fireworks. They charged one and let the other one off...",
- "No more Harry Potter jokes guys. I'm Sirius.",
- "It was hard getting over my addiction to hokey pokey, but I've turned myself around.",
- "It takes a lot of balls to golf the way I do.",
- "Why did everyone want to hang out with the mushroom? Because he was a fungi.",
- "How much does a hipster weigh? An instagram.",
- "I used to be addicted to soap, but I'm clean now.",
- "When life gives you melons, you’re probably dyslexic.",
- "What's with all the blind jokes? I just don't see the point.",
- "If Apple made a car, would it have Windows?",
- "Need an ark? I Noah guy.",
- "The scarecrow won an award because he was outstanding in his field.",
- "What's the difference between a man in a tux on a bicycle, and a man in a sweatsuit on a trycicle? A tire.",
- "What do you do with a sick chemist? If you can't helium, and you can't curium, you'll just have to barium.",
- "I'm reading a book about anti-gravity. It's impossible to put down.",
- "Trying to write with a broken pencil is pointless.",
- "When TVs go on vacation, they travel to remote islands.",
- "I was going to tell a midget joke, but it's too short.",
- "Jokes about German sausage are the wurst.",
- "How do you organize a space party? You planet.",
- "Sleeping comes so naturally to me, I could do it with my eyes closed.",
- "I'm glad I know sign language; it's pretty handy.",
- "Atheism is a non-prophet organization.",
- "Velcro: What a rip-off!",
- "If they made a Minecraft movie, it would be a blockbuster.",
- "I don't trust people with graph paper. They're always plotting something",
- "I had a friend who was addicted to brake fluid. He says he can stop anytime.",
- "The form said I had Type A blood, but it was a Type O.",
- "I went to to the shop to buy eight Sprites - I came home and realised I'd picked 7Up.",
- "There was an explosion at a pie factory. 3.14 people died.",
- "A man drove his car into a tree and found out how a Mercedes bends.",
- "The experienced carpenter really nailed it, but the new guy screwed everything up.",
- "I didn't like my beard at first, but then it grew on me.",
- "Smaller babies may be delivered by stork, but the heavier ones need a crane.",
- "What's the definition of a will? It's a dead giveaway.",
- "I was going to look for my missing watch, but I could never find the time.",
- "I hate elevators, and I often take steps to avoid them.",
- "Did you hear about the guy whose whole left side was cut off? He's all right now.",
- "It's not that the man did not know how to juggle, he just didn't have the balls to do it.",
- "I used to be a loan shark, but I lost interest",
- "I don't trust these stairs; they're always up to something.",
- "My friend's bakery burned down last night. Now his business is toast.",
- "Don't trust people that do acupuncture; they're back stabbers.",
- "The man who survived mustard gas and pepper spray is now a seasoned veteran.",
- "Police were called to a daycare where a three-year-old was resisting a rest.",
- "When Peter Pan punches, they Neverland",
- "The shoemaker did not deny his apprentice anything he needed. He gave him his awl.",
- "I did a theatrical performance about puns. It was a play on words.",
- "Show me a piano falling down a mineshaft and I'll show you A-flat minor.",
- "Have you ever tried to eat a clock? It's very time consuming.",
- "There was once a cross-eyed teacher who couldn't control his pupils.",
- "A new type of broom came out and it is sweeping the nation.",
- "I relish the fact that you've mustard the strength to ketchup to me.",
- "I knew a woman who owned a taser. Man, was she stunning!",
- "What did the grape say when it got stepped on? Nothing - but it let out a little whine.",
- "It was an emotional wedding. Even the cake was in tiers.",
- "When a clock is hungry it goes back four seconds.",
- "The dead batteries were given out free of charge.",
- "Why are there no knock-knock jokes about America? Because freedom rings.",
- "When the cannibal showed up late to dinner, they gave him the cold shoulder.",
- "I should have been sad when my flashlight died, but I was delighted.",
- "Why don't tennis players ever get married? Love means nothing to them.",
- "Pterodactyls can't be heard going to the bathroom because the P is silent.",
- "Mermaids make calls on their shell phones.",
- "What do you call an aardvark with three feet? A yaardvark.",
- "Captain Kirk has three ears: A right ear, a left ear, and a final front ear.",
- "How do celebrities stay cool? They have a lot of fans.",
- "Without geometry, life is pointless.",
- "Did you hear about the cow who tried to jump over a barbed-wire fence? It ended in udder destruction.",
- "The truth may ring like a bell, but it is seldom ever tolled.",
- "I used to work for the IRS, but my job was too taxing.",
- "I used to be a programmer, but then I lost my drive.",
- "Pediatricians are doctors with little patients.",
- "I finally fired my masseuse today. She always rubbed me the wrong way.",
- "I stayed up all night wondering where the sun went. Then it dawned on me.",
- "What's the difference between a man and his dog? The man wears a suit; the dog just pants.",
- "A psychic midget who escapes from prison is a small medium at large.",
- "I've been to the dentist several times, so I know the drill.",
- "The roundest knight at King Arthur's round table was Sir Cumference. He acquired his size from too much pi.",
- "She was only a whiskey maker, but he loved her still.",
- "Male deer have buck teeth.",
- "Whiteboards are remarkable.",
- "Visitors in Cuba are always Havana good time.",
- "Why does electricity shock people? It doesn't know how to conduct itself.",
- "Lancelot had a scary dream about his horse. It was a knight mare.",
- "A tribe of cannibals captured a missionary and ate him. Afterward, they all had violent food poisoning. This just goes to show that you can't keep a good man down.",
- "Heaven for gamblers is a paradise.",
- "Old wheels aren't thrown away, they're just retired.",
- "Horses are very stable animals.",
- "Banks don't crash, they just lose their balance.",
- "The career of a skier can go downhill very fast.",
- "In democracy, it's your vote that counts. In feudalism, it's your count that votes.",
- "A sea lion is nothing but an ionized seal.",
- "The vegetables from my garden aren't that great. I guess you could say they're mediokra."
-}
-
-function pun:action(msg)
-
- utilities.send_reply(self, msg, puns[math.random(#puns)])
-
-end
-
-return pun
diff --git a/otouto/plugins/reactions.lua b/otouto/plugins/reactions.lua
deleted file mode 100644
index e594d50..0000000
--- a/otouto/plugins/reactions.lua
+++ /dev/null
@@ -1,52 +0,0 @@
- -- Never change this plugin. It was not meant to be changed.
- -- You may add reactions. You must never remove reactions.
- -- You must never restructure. You must never disable this plugin.
- -- - Drew, creator, a year later.
-
- -- Nevermind, Brayden changed it.
- -- - Drew, just now.
-
-local reactions = {}
-
-local utilities = require('otouto.utilities')
-
-reactions.command = 'reactions'
-reactions.doc = '`Returns a list of "reaction" emoticon commands.`'
-
-local mapping = {
- ['shrug'] = '¯\\_(ツ)_/¯',
- ['lenny'] = '( ͡° ͜ʖ ͡°)',
- ['flip'] = '(╯°□°)╯︵ ┻━┻',
- ['homo'] = '┌(┌ ^o^)┐',
- ['look'] = 'ಠ_ಠ',
- ['shots?'] = 'SHOTS FIRED',
- ['facepalm'] = '(-‸ლ)'
-}
-
-local help
-
-function reactions:init(config)
- -- Generate a "help" message triggered by "/reactions".
- help = 'Reactions:\n'
- reactions.triggers = utilities.triggers(self.info.username, config.cmd_pat):t('reactions').table
- for trigger,reaction in pairs(mapping) do
- help = help .. '• ' .. config.cmd_pat .. trigger:gsub('.%?', '') .. ': ' .. reaction .. '\n'
- table.insert(reactions.triggers, config.cmd_pat..trigger)
- table.insert(reactions.triggers, config.cmd_pat..trigger..'@'..self.info.username:lower())
- end
-end
-
-function reactions:action(msg, config)
- if string.match(msg.text_lower, config.cmd_pat..'reactions') then
- utilities.send_message(self, msg.chat.id, help)
- return
- end
- for trigger,reaction in pairs(mapping) do
- if string.match(msg.text_lower, config.cmd_pat..trigger) then
- utilities.send_message(self, msg.chat.id, reaction)
- return
- end
- end
-end
-
-return reactions
diff --git a/otouto/plugins/shout.lua b/otouto/plugins/shout.lua
deleted file mode 100644
index 3c1af21..0000000
--- a/otouto/plugins/shout.lua
+++ /dev/null
@@ -1,56 +0,0 @@
-local shout = {}
-
-local utilities = require('otouto.utilities')
-
-shout.command = 'shout '
-
-function shout:init(config)
- shout.triggers = utilities.triggers(self.info.username, config.cmd_pat):t('shout', true).table
- shout.doc = [[```
-]]..config.cmd_pat..[[shout
-Shouts something. Input may be the replied-to message.
-```]]
-end
-
-function shout:action(msg)
-
- local input = utilities.input(msg.text)
- if not input then
- if msg.reply_to_message and #msg.reply_to_message.text > 0 then
- input = msg.reply_to_message.text
- else
- utilities.send_message(self, msg.chat.id, shout.doc, true, msg.message_id, true)
- return
- end
- end
- input = utilities.trim(input)
- input = input:upper()
-
- local output = ''
- local inc = 0
- local ilen = 0
- for match in input:gmatch(utilities.char.utf_8) do
- if ilen < 20 then
- ilen = ilen + 1
- output = output .. match .. ' '
- end
- end
- ilen = 0
- output = output .. '\n'
- for match in input:sub(2):gmatch(utilities.char.utf_8) do
- if ilen < 19 then
- local spacing = ''
- for _ = 1, inc do
- spacing = spacing .. ' '
- end
- inc = inc + 1
- ilen = ilen + 1
- output = output .. match .. ' ' .. spacing .. match .. '\n'
- end
- end
- output = '```\n' .. utilities.trim(output) .. '\n```'
- utilities.send_message(self, msg.chat.id, output, true, false, true)
-
-end
-
-return shout
diff --git a/otouto/plugins/slap.lua b/otouto/plugins/slap.lua
deleted file mode 100644
index d115d12..0000000
--- a/otouto/plugins/slap.lua
+++ /dev/null
@@ -1,153 +0,0 @@
-local slap = {}
-
-local utilities = require('otouto.utilities')
-
-slap.command = 'slap [target]'
-
-function slap:init(config)
- slap.triggers = utilities.triggers(self.info.username, config.cmd_pat):t('slap', true).table
- slap.doc = [[```
-]]..config.cmd_pat..[[slap [target]
-Slap somebody.
-```]]
-end
-
-local slaps = {
- 'VICTIM was shot by VICTOR.',
- 'VICTIM was pricked to death.',
- 'VICTIM walked into a cactus while trying to escape VICTOR.',
- 'VICTIM drowned.',
- 'VICTIM drowned whilst trying to escape VICTOR.',
- 'VICTIM blew up.',
- 'VICTIM was blown up by VICTOR.',
- 'VICTIM hit the ground too hard.',
- 'VICTIM fell from a high place.',
- 'VICTIM fell off a ladder.',
- 'VICTIM fell into a patch of cacti.',
- 'VICTIM was doomed to fall by VICTOR.',
- 'VICTIM was blown from a high place by VICTOR.',
- 'VICTIM was squashed by a falling anvil.',
- 'VICTIM went up in flames.',
- 'VICTIM burned to death.',
- 'VICTIM was burnt to a crisp whilst fighting VICTOR.',
- 'VICTIM walked into a fire whilst fighting VICTOR.',
- 'VICTIM tried to swim in lava.',
- 'VICTIM tried to swim in lava while trying to escape VICTOR.',
- 'VICTIM was struck by lightning.',
- 'VICTIM was slain by VICTOR.',
- 'VICTIM got finished off by VICTOR.',
- 'VICTIM was killed by magic.',
- 'VICTIM was killed by VICTOR using magic.',
- 'VICTIM starved to death.',
- 'VICTIM suffocated in a wall.',
- 'VICTIM fell out of the world.',
- 'VICTIM was knocked into the void by VICTOR.',
- 'VICTIM withered away.',
- 'VICTIM was pummeled by VICTOR.',
- 'VICTIM was fragged by VICTOR.',
- 'VICTIM was desynchronized.',
- 'VICTIM was wasted.',
- 'VICTIM was busted.',
- 'VICTIM\'s bones are scraped clean by the desolate wind.',
- 'VICTIM has died of dysentery.',
- 'VICTIM fainted.',
- 'VICTIM is out of usable Pokemon! VICTIM whited out!',
- 'VICTIM is out of usable Pokemon! VICTIM blacked out!',
- 'VICTIM whited out!',
- 'VICTIM blacked out!',
- 'VICTIM says goodbye to this cruel world.',
- 'VICTIM got rekt.',
- 'VICTIM was sawn in half by VICTOR.',
- 'VICTIM died. I blame VICTOR.',
- 'VICTIM was axe-murdered by VICTOR.',
- 'VICTIM\'s melon was split by VICTOR.',
- 'VICTIM was sliced and diced by VICTOR.',
- 'VICTIM was split from crotch to sternum by VICTOR.',
- 'VICTIM\'s death put another notch in VICTOR\'s axe.',
- 'VICTIM died impossibly!',
- 'VICTIM died from VICTOR\'s mysterious tropical disease.',
- 'VICTIM escaped infection by dying.',
- 'VICTIM played hot-potato with a grenade.',
- 'VICTIM was knifed by VICTOR.',
- 'VICTIM fell on his sword.',
- 'VICTIM ate a grenade.',
- 'VICTIM practiced being VICTOR\'s clay pigeon.',
- 'VICTIM is what\'s for dinner!',
- 'VICTIM was terminated by VICTOR.',
- 'VICTIM was shot before being thrown out of a plane.',
- 'VICTIM was not invincible.',
- 'VICTIM has encountered an error.',
- 'VICTIM died and reincarnated as a goat.',
- 'VICTOR threw VICTIM off a building.',
- 'VICTIM is sleeping with the fishes.',
- 'VICTIM got a premature burial.',
- 'VICTOR replaced all of VICTIM\'s music with Nickelback.',
- 'VICTOR spammed VICTIM\'s email.',
- 'VICTOR made VICTIM a knuckle sandwich.',
- 'VICTOR slapped VICTIM with pure nothing.',
- 'VICTOR hit VICTIM with a small, interstellar spaceship.',
- 'VICTIM was quickscoped by VICTOR.',
- 'VICTOR put VICTIM in check-mate.',
- 'VICTOR RSA-encrypted VICTIM and deleted the private key.',
- 'VICTOR put VICTIM in the friendzone.',
- 'VICTOR slaps VICTIM with a DMCA takedown request!',
- 'VICTIM became a corpse blanket for VICTOR.',
- 'Death is when the monsters get you. Death comes for VICTIM.',
- 'Cowards die many times before their death. VICTIM never tasted death but once.',
- 'VICTIM died of hospital gangrene.',
- 'VICTIM got a house call from Doctor VICTOR.',
- 'VICTOR beheaded VICTIM.',
- 'VICTIM got stoned...by an angry mob.',
- 'VICTOR sued the pants off VICTIM.',
- 'VICTIM was impeached.',
- 'VICTIM was one-hit KO\'d by VICTOR.',
- 'VICTOR sent VICTIM to /dev/null.',
- 'VICTOR sent VICTIM down the memory hole.',
- 'VICTIM was a mistake.',
- '"VICTIM was a mistake." - VICTOR',
- 'VICTOR checkmated VICTIM in two moves.'
-}
-
- -- optimize later
-function slap:action(msg)
- local input = utilities.input(msg.text)
- local victor_id = msg.from.id
- local victim_id = utilities.id_from_message(self, msg)
- -- IDs
- if victim_id then
- if victim_id == victor_id then
- victor_id = self.info.id
- end
- else
- if not input then
- victor_id = self.info.id
- victim_id = msg.from.id
- end
- end
- -- Names
- local victor_name, victim_name
- if input and not victim_id then
- victim_name = input
- else
- local victim_id_str = tostring(victim_id)
- if self.database.userdata[victim_id_str] and self.database.userdata[victim_id_str].nickname then
- victim_name = self.database.userdata[victim_id_str].nickname
- elseif self.database.users[victim_id_str] then
- victim_name = utilities.build_name(self.database.users[victim_id_str].first_name, self.database.users[victim_id_str].last_name)
- else
- victim_name = victim_id_str
- end
- end
- local victor_id_str = tostring(victor_id)
- if self.database.userdata[victor_id_str] and self.database.userdata[victor_id_str].nickname then
- victor_name = self.database.userdata[victor_id_str].nickname
- elseif self.database.users[victor_id_str] then
- victor_name = utilities.build_name(self.database.users[victor_id_str].first_name, self.database.users[victor_id_str].last_name)
- else
- victor_name = self.info.first_name
- end
- local output = utilities.char.zwnj .. slaps[math.random(#slaps)]:gsub('VICTIM', victim_name):gsub('VICTOR', victor_name)
- utilities.send_message(self, msg.chat.id, output)
-end
-
-return slap
diff --git a/otouto/plugins/whoami.lua b/otouto/plugins/whoami.lua
deleted file mode 100644
index ce068ff..0000000
--- a/otouto/plugins/whoami.lua
+++ /dev/null
@@ -1,52 +0,0 @@
-local whoami = {}
-
-local utilities = require('otouto.utilities')
-
-whoami.command = 'whoami'
-
-function whoami:init(config)
- whoami.triggers = utilities.triggers(self.info.username, config.cmd_pat):t('who', true):t('whoami').table
- whoami.doc = [[```
-Returns user and chat info for you or the replied-to message.
-Alias: ]]..config.cmd_pat..[[who
-```]]
-end
-
-function whoami:action(msg)
-
- if msg.reply_to_message then
- msg = msg.reply_to_message
- end
-
- local from_name = utilities.build_name(msg.from.first_name, msg.from.last_name)
-
- local chat_id = math.abs(msg.chat.id)
- if chat_id > 1000000000000 then
- chat_id = chat_id - 1000000000000
- end
-
- local user = 'You are @%s, also known as *%s* `[%s]`'
- if msg.from.username then
- user = user:format(utilities.markdown_escape(msg.from.username), from_name, msg.from.id)
- else
- user = 'You are *%s* `[%s]`,'
- user = user:format(from_name, msg.from.id)
- end
-
- local group = '@%s, also known as *%s* `[%s]`.'
- if msg.chat.type == 'private' then
- group = group:format(utilities.markdown_escape(self.info.username), self.info.first_name, self.info.id)
- elseif msg.chat.username then
- group = group:format(utilities.markdown_escape(msg.chat.username), msg.chat.title, chat_id)
- else
- group = '*%s* `[%s]`.'
- group = group:format(msg.chat.title, chat_id)
- end
-
- local output = user .. ', and you are messaging ' .. group
-
- utilities.send_message(self, msg.chat.id, output, true, msg.message_id, true)
-
-end
-
-return whoami