Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- local Pattern = require('utils/pattern')
- local urlencode = require('querystring').urlencode
- local concat = table.concat
- local sf = string.format
- local sub = string.sub
- local unpack = table.unpack
- local config = require('../config.lua')
- local admin_role = config.admin_role
- --[[
- yhhhhddyyhdhdhddhsyhyyyhhhyssyyyyyso+/++////////+++++oooosssoyyyyyyydmmmmmmmsymmmmmmmdhyhhhhsoyhyyyy
- ysssyyhyyhddhssso++syyyhhhhyyyssssyysossoosssoooso++ossoossooyyyyyyhdmmmmmmmsymmmmmmmdhysooooooooooo
- ysyyyhhyyhhhyo/:---+yyyhyhhyyyysossssssysssysyysysoossssssssosysyyyyyyhdmmmmsymmmmmmdddhhhyyyyysssss
- +oo+///+oosssyys+/:ohyyhhhhyyyhhysooooosoooooooossosssssssyssosyyyyhyssshdddssdhhysyhyo+yhdddddddddd
- ++++++++ooooooooo++shhhhhhhyhhhhhhyyssoossssssoossssoooooosssooyhyyhhs+//+/:/::+o+/+sooyhyyyhhhyyyyh
- /////:://::::////++ydhhhhhhhhhhhhhhyyyyyssoooooosssssysooo++o+ooosyyyo//////////+/////+osyyyysssyyss
- -://///::://////++oyddhhhhdhhhhhhhhysssssssssyyysoooooossyhysossooooossoosso++++++//++++osyyysssssss
- --:-:::---://+++osshddhhhhhhhddhhhhsosyysyssys++////++ooooosyhoooosyssooooossoossooooo+ooossssssssos
- ----.-------:::+osshdddhhhhhdhddhysosyysyhyysso++++oooosssssssyhyyyyyyyyyysssosoooooooooossssoooo++o
- /:--..------::--+hyhddddhdhhhhhyyssyhyyhmNdhyysssossssyyyyyyhmmyhdhssssssssyysssssoossoooooo++++++oo
- ://:-.-:/sooso/:+hyhddddhyhyyyyssyddmdmNNNdyyyyhhhhhhhhhhdddmhysyymhsyyyysssoyhssysssssossoosssooooo
- /////--:osyhhssooyyhhdhhyyhyhyssydmmmNmhdyo////++ooooossyyo++oosssyhdhhhhhyysosdyyssssssssssssssssss
- --::///:-/shhhyoosydddhhyyyyhyoydddmdhyys+:-----:------:::---:/+++syddmddhhhysoyysosssyyyyyyyyyssssy
- :--::////-:+yysssoshhhddhyyyhysyddhyyyss+:--------...........---:://+syhdddddhhdyssyysssyyyyyyyyyyyy
- :::::://++:--//++oosyyhhyhhhysshysyyhyso:------................------:/+ossymmmdyyyyyysoossyyyyyyyyy
- /:-:/+/+oooo++ossssssyyyhdddhsyyyyyyyys+:----------.........-----------::/+odNNmsyyssysoosssyyhyysyh
- sso/::/oyyhhyyhhyyyyysyyhhddhsyyyyyysso+:--------------------------------::/smmhsyyssyyssssyhyhyssyy
- soosso+/:/sydddhddddhyyyhhhhysssyyssso+/::------------------------------::::+yyysyhyhyyyyyyyyyyysoyy
- hhysossso+/:+shdmmdddhhhyys++oysyyyss+/::----------------------------:::::::/sysyyyyyyhyssssssyysoyy
- shddhyssssso+/:/oyhmmmmdyo:/:/osyyyso:-------------------------------:::::::/sysyyyyyyysyysyyosysoyy
- ::/ohddhyssoooo+/::+shdds/+o///oyyyo/--------..-------------:----------:::::+yyyyyhyyyyyyyyyyyyyyyhh
- so+::/ohmmhsooo+oo+/::/++/+/:://sys+:------------:::::::::::::::-------:::::syhhdhhhhyyyyysssssyssss
- sssoo/::/ososysooooooo/:-:/::+o/oyo:-------://+oossyssoo+/::::://::::::::::/yhhhdhhhhhyyyhhhsooooosy
- yssooss+:--/+so+yysooooo+/::/+/:ss/-------:/osyyhhhhhhso+/:::/+sssso+/::-::syyhdddddhhhhhhhyssssssyy
- sssooossso/--:/+ssssyysooo/--:/:++:---------:///++ossso+/:--:+sydddhys+/:-/yooddmmddhhhhyyyyyyyyyhdd
- +o+oossoosso:--/shhhhdhhso/----:::::---------::////+++//:---:osyyyyyyhs+/:+yoshdmmdddddhhhhhyhhddhhh
- ::/++////+oss+:-:oyhhddddhy/::::::::------------::::::----.-:++oo+++++o//:+oo+/+yhdddddddhhyhddmdhyy
- -.-/+/////+oooo:--/syyddddhyo//::::::----------:::::-----..-:////////:::::+///:///+oyhdmmhyyyyyhddhy
- .``-+///::/ossoo/--/oosyhhyso+/::::::::::::::://+++:---....-::::::::::::://::::::::::/oyddhhhhhdddhh
- ---/+////::/ossoo:--://///////::/:::////////++osso+:---.----:://::::-:::::--::::::::---:/oyhdmdddddd
- -::/+////:::/osoo+---:oooossso:://////++++ooyyyyssso+//:::::::+s+//::::::--::::::::::-----:/shdmmmdd
- ...-+////-.-:+oooo:--:syssyyy+:::////+++++syhhyssyyyyoo+++oosssyyo+///////++//::::::::::::::::+ydmmm
- ::::///+/:--:::::/:---+ssssss/-::///++++++yddddhsosshhhhhhhhyyyyyso++++oyhhyo+/:/::::::::::::::/+yhd
- ++++//++//-------:----:////ss::::/+++++++sdmhysys+++oosyhhhhyhyyysooooohdddho+/::/::::::::::::::////
- :::--..-.....``.------::///s+::::/+++++oshmmyo+/++oo+oooyyhddmmhsoooosydddhy+////////::::::::::::/::
- ---........--....--.-://///+:-:://++oooshmmdhyoo+++oo++++ooosmmhooooyhhhhhysoo++ooo++//:::::::::::::
- ..-.--....------.-..-::::---:::://++ooosddddddyyyyhhhhys+++ohmmhssshddhhhhssyysssooooo+/::::::::::::
- -......---------.-.........-::::///++osydmddhyyyysyyhdhyysyhmNmyosddddyhhyssyhhyyysooooo+/:::::::::-
- /:-````........-..````....--:::////++oosydddhhhyssssssssyhhmmmh+:://ossyyyysssssssssssso++/////::-..
- ///-`...-------.`````.....--:::///++++oooshdddhyyyyssyssyhddmy//::/:----:/+++ossssyysyssosso++//-.``
- :::-------:::::.````......--:::////++++oooosydmmddhddhhhddmdy/-///+/::::-------:++osssssssosoo+:.`
- --------:::////:.```......---:://///++++oooossyhdddmddddhhso+::/++++//////::::---.--/sssyyyyys/.````
- ---:::::::///////........---::::////+++++oooooosssyyyysssoo+/:/+++++///////::::::---.-:/oyyyo/.````.
- :::::::://////////-.....----:::://///+++++++ooossssssssooo++//+ooo++/////////////::--..--:++/:--::::
- ::::::::////////+++/:-.----::::://///+++++++ooosssssssoooo+++osooo++///////+++++///////++oosssyyyysy
- ::::::::::////////+++/:---::::::////////++++oooosssoooooooosssssoo++///+++++o+ooossyyyyyyhhhhhhhhhhh
- ::////////////////++++o++/:::::://////++++++oooosooooooossyyssssoo++++ooooooyyyyyyyyyyyhhhyhhhhhhhhh
- ///////////+++//+++++++oooo++/////////+++++oooooooooossyyyyysssooooooooooshhhhhyhhhhyhhhhhhhhhhhhddd
- /////////////++++++++++++ooossooo++++++++ooooooossyyyyyyyysssssssssoooo+shdhdhdhhhhhhdddddddddddddmm
- ///////////////////+++++++++oosssssssssyyyyyyyyyhhyyyyysyyyssssoo+++++++yddddhdddddmmmmmmmmmmmmmmNNN
- ////////////////////////+++oooooooossssyyyyyyyyyysssyysssssoooooooo+++++ydddddmmmmmmmmmNNNNNNNNNMMMM
- ++++/+++++++++//////++/++/+++ooooosoosssssssssssssssssssooooooooo+++++oohddddmmmmmNNNNNNNNNNNNMMMMNN
- ++++//++++/+++/////++///+++/++++++oooossssssssssooooooooooooooo+++oooooydddmmmmNNNNNNNNNNNNNMMMMMMNm
- +++++++++///////+++/+++++++++++++++++++ooooooooooooooooooo+++oooooooooosdddmmmNNNNNNNNNNNNNNMMMMNNmd
- +++++++++++++++++//+///++++++++++++++++++++ooooooooooooooooooosssoooooosddmmNNNNNNNNNNNNNNNMMMMMNmdy
- +++++++++++++++/++++++++++++++++++++++++++++o+oooo++ooooooooooooooooooooymmmNNNNNNNNNNNNNNNMMMMMNmhs
- --]]--
- local help = {
- _SIGNATURE = '[mentions [, ...]] !help [, command]',
- _DESCRIPTION = 'Get usage info for Luabot',
- }
- local mt = {__call = function(_, message, commands)
- local help_pattern = Pattern:new{
- name = 'help',
- prefix = '!',
- args = 1,
- }
- local matches = help_pattern:match(message.content) or {}
- for _, match in ipairs(matches) do
- local member
- if message.guild then
- member = message.guild:getMember(message.author)
- end
- local mentions, queries = unpack(match)
- local query = queries[1]
- local command = commands[query .. '.lua']
- local response = concat(mentions, ' ') .. '\n```text\n'
- local template = '\n\nName: %s\nDescription: %s\nUsage: %s'
- if not command or query == '' then
- response = response .. 'Luabot is an opensource bot written in Lua\nSee the source at https://github.com/ryanford-frontend/luabot-discord'
- for name, info in pairs(commands) do
- if member or info._ROLE ~= admin_role then
- local authorized = info._ROLE ~= admin_role or info._ROLE == admin_role and member:hasRole(admin_role)
- if authorized then
- response = response .. sf(template, name:sub(1, -5), info._DESCRIPTION, info._SIGNATURE)
- end
- end
- end
- response = response .. '\n```'
- message.channel:send(response)
- else
- if member or command._ROLE ~= admin_role then
- local authorized = command._ROLE ~= admin_role or command._ROLE == admin_role and member:hasRole(admin_role)
- if authorized then
- response = response .. sf(template, query, command._DESCRIPTION, concat({ command._SIGNATURE, command._HELP }, '\n\n'))
- response = response .. '\n```'
- message.channel:send(response)
- end
- end
- end
- end
- end}
- mt.__index = mt
- return setmetatable(help, mt)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement