SHARE
TWEET

Untitled

a guest Jul 24th, 2019 104 Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. local Pattern = require('utils/pattern')
  2. local urlencode = require('querystring').urlencode
  3. local concat = table.concat
  4. local sf = string.format
  5. local sub = string.sub
  6. local unpack = table.unpack
  7. local config = require('../config.lua')
  8. local admin_role = config.admin_role
  9. --[[
  10. yhhhhddyyhdhdhddhsyhyyyhhhyssyyyyyso+/++////////+++++oooosssoyyyyyyydmmmmmmmsymmmmmmmdhyhhhhsoyhyyyy
  11. ysssyyhyyhddhssso++syyyhhhhyyyssssyysossoosssoooso++ossoossooyyyyyyhdmmmmmmmsymmmmmmmdhysooooooooooo
  12. ysyyyhhyyhhhyo/:---+yyyhyhhyyyysossssssysssysyysysoossssssssosysyyyyyyhdmmmmsymmmmmmdddhhhyyyyysssss
  13. +oo+///+oosssyys+/:ohyyhhhhyyyhhysooooosoooooooossosssssssyssosyyyyhyssshdddssdhhysyhyo+yhdddddddddd
  14. ++++++++ooooooooo++shhhhhhhyhhhhhhyyssoossssssoossssoooooosssooyhyyhhs+//+/:/::+o+/+sooyhyyyhhhyyyyh
  15. /////:://::::////++ydhhhhhhhhhhhhhhyyyyyssoooooosssssysooo++o+ooosyyyo//////////+/////+osyyyysssyyss
  16. -://///::://////++oyddhhhhdhhhhhhhhysssssssssyyysoooooossyhysossooooossoosso++++++//++++osyyysssssss
  17. --:-:::---://+++osshddhhhhhhhddhhhhsosyysyssys++////++ooooosyhoooosyssooooossoossooooo+ooossssssssos
  18. ----.-------:::+osshdddhhhhhdhddhysosyysyhyysso++++oooosssssssyhyyyyyyyyyysssosoooooooooossssoooo++o
  19. /:--..------::--+hyhddddhdhhhhhyyssyhyyhmNdhyysssossssyyyyyyhmmyhdhssssssssyysssssoossoooooo++++++oo
  20. ://:-.-:/sooso/:+hyhddddhyhyyyyssyddmdmNNNdyyyyhhhhhhhhhhdddmhysyymhsyyyysssoyhssysssssossoosssooooo
  21. /////--:osyhhssooyyhhdhhyyhyhyssydmmmNmhdyo////++ooooossyyo++oosssyhdhhhhhyysosdyyssssssssssssssssss
  22. --::///:-/shhhyoosydddhhyyyyhyoydddmdhyys+:-----:------:::---:/+++syddmddhhhysoyysosssyyyyyyyyyssssy
  23. :--::////-:+yysssoshhhddhyyyhysyddhyyyss+:--------...........---:://+syhdddddhhdyssyysssyyyyyyyyyyyy
  24. :::::://++:--//++oosyyhhyhhhysshysyyhyso:------................------:/+ossymmmdyyyyyysoossyyyyyyyyy
  25. /:-:/+/+oooo++ossssssyyyhdddhsyyyyyyyys+:----------.........-----------::/+odNNmsyyssysoosssyyhyysyh
  26. sso/::/oyyhhyyhhyyyyysyyhhddhsyyyyyysso+:--------------------------------::/smmhsyyssyyssssyhyhyssyy
  27. soosso+/:/sydddhddddhyyyhhhhysssyyssso+/::------------------------------::::+yyysyhyhyyyyyyyyyyysoyy
  28. hhysossso+/:+shdmmdddhhhyys++oysyyyss+/::----------------------------:::::::/sysyyyyyyhyssssssyysoyy
  29. shddhyssssso+/:/oyhmmmmdyo:/:/osyyyso:-------------------------------:::::::/sysyyyyyyysyysyyosysoyy
  30. ::/ohddhyssoooo+/::+shdds/+o///oyyyo/--------..-------------:----------:::::+yyyyyhyyyyyyyyyyyyyyyhh
  31. so+::/ohmmhsooo+oo+/::/++/+/:://sys+:------------:::::::::::::::-------:::::syhhdhhhhyyyyysssssyssss
  32. sssoo/::/ososysooooooo/:-:/::+o/oyo:-------://+oossyssoo+/::::://::::::::::/yhhhdhhhhhyyyhhhsooooosy
  33. yssooss+:--/+so+yysooooo+/::/+/:ss/-------:/osyyhhhhhhso+/:::/+sssso+/::-::syyhdddddhhhhhhhyssssssyy
  34. sssooossso/--:/+ssssyysooo/--:/:++:---------:///++ossso+/:--:+sydddhys+/:-/yooddmmddhhhhyyyyyyyyyhdd
  35. +o+oossoosso:--/shhhhdhhso/----:::::---------::////+++//:---:osyyyyyyhs+/:+yoshdmmdddddhhhhhyhhddhhh
  36. ::/++////+oss+:-:oyhhddddhy/::::::::------------::::::----.-:++oo+++++o//:+oo+/+yhdddddddhhyhddmdhyy
  37. -.-/+/////+oooo:--/syyddddhyo//::::::----------:::::-----..-:////////:::::+///:///+oyhdmmhyyyyyhddhy
  38. .``-+///::/ossoo/--/oosyhhyso+/::::::::::::::://+++:---....-::::::::::::://::::::::::/oyddhhhhhdddhh
  39. ---/+////::/ossoo:--://///////::/:::////////++osso+:---.----:://::::-:::::--::::::::---:/oyhdmdddddd
  40. -::/+////:::/osoo+---:oooossso:://////++++ooyyyyssso+//:::::::+s+//::::::--::::::::::-----:/shdmmmdd
  41. ...-+////-.-:+oooo:--:syssyyy+:::////+++++syhhyssyyyyoo+++oosssyyo+///////++//::::::::::::::::+ydmmm
  42. ::::///+/:--:::::/:---+ssssss/-::///++++++yddddhsosshhhhhhhhyyyyyso++++oyhhyo+/:/::::::::::::::/+yhd
  43. ++++//++//-------:----:////ss::::/+++++++sdmhysys+++oosyhhhhyhyyysooooohdddho+/::/::::::::::::::////
  44. :::--..-.....``.------::///s+::::/+++++oshmmyo+/++oo+oooyyhddmmhsoooosydddhy+////////::::::::::::/::
  45. ---........--....--.-://///+:-:://++oooshmmdhyoo+++oo++++ooosmmhooooyhhhhhysoo++ooo++//:::::::::::::
  46. ..-.--....------.-..-::::---:::://++ooosddddddyyyyhhhhys+++ohmmhssshddhhhhssyysssooooo+/::::::::::::
  47. -......---------.-.........-::::///++osydmddhyyyysyyhdhyysyhmNmyosddddyhhyssyhhyyysooooo+/:::::::::-
  48. /:-````........-..````....--:::////++oosydddhhhyssssssssyhhmmmh+:://ossyyyysssssssssssso++/////::-..
  49. ///-`...-------.`````.....--:::///++++oooshdddhyyyyssyssyhddmy//::/:----:/+++ossssyysyssosso++//-.``
  50. :::-------:::::.````......--:::////++++oooosydmmddhddhhhddmdy/-///+/::::-------:++osssssssosoo+:.`  
  51. --------:::////:.```......---:://///++++oooossyhdddmddddhhso+::/++++//////::::---.--/sssyyyyys/.````
  52. ---:::::::///////........---::::////+++++oooooosssyyyysssoo+/:/+++++///////::::::---.-:/oyyyo/.````.
  53. :::::::://////////-.....----:::://///+++++++ooossssssssooo++//+ooo++/////////////::--..--:++/:--::::
  54. ::::::::////////+++/:-.----::::://///+++++++ooosssssssoooo+++osooo++///////+++++///////++oosssyyyysy
  55. ::::::::::////////+++/:---::::::////////++++oooosssoooooooosssssoo++///+++++o+ooossyyyyyyhhhhhhhhhhh
  56. ::////////////////++++o++/:::::://////++++++oooosooooooossyyssssoo++++ooooooyyyyyyyyyyyhhhyhhhhhhhhh
  57. ///////////+++//+++++++oooo++/////////+++++oooooooooossyyyyysssooooooooooshhhhhyhhhhyhhhhhhhhhhhhddd
  58. /////////////++++++++++++ooossooo++++++++ooooooossyyyyyyyysssssssssoooo+shdhdhdhhhhhhdddddddddddddmm
  59. ///////////////////+++++++++oosssssssssyyyyyyyyyhhyyyyysyyyssssoo+++++++yddddhdddddmmmmmmmmmmmmmmNNN
  60. ////////////////////////+++oooooooossssyyyyyyyyyysssyysssssoooooooo+++++ydddddmmmmmmmmmNNNNNNNNNMMMM
  61. ++++/+++++++++//////++/++/+++ooooosoosssssssssssssssssssooooooooo+++++oohddddmmmmmNNNNNNNNNNNNMMMMNN
  62. ++++//++++/+++/////++///+++/++++++oooossssssssssooooooooooooooo+++oooooydddmmmmNNNNNNNNNNNNNMMMMMMNm
  63. +++++++++///////+++/+++++++++++++++++++ooooooooooooooooooo+++oooooooooosdddmmmNNNNNNNNNNNNNNMMMMNNmd
  64. +++++++++++++++++//+///++++++++++++++++++++ooooooooooooooooooosssoooooosddmmNNNNNNNNNNNNNNNMMMMMNmdy
  65. +++++++++++++++/++++++++++++++++++++++++++++o+oooo++ooooooooooooooooooooymmmNNNNNNNNNNNNNNNMMMMMNmhs
  66. --]]--
  67.  
  68. local help = {
  69.    _SIGNATURE = '[mentions [, ...]] !help [, command]',
  70.    _DESCRIPTION = 'Get usage info for Luabot',
  71. }
  72. local mt = {__call = function(_, message, commands)
  73.    local help_pattern = Pattern:new{
  74.       name = 'help',
  75.       prefix = '!',
  76.       args = 1,
  77.    }
  78.  
  79.    local matches = help_pattern:match(message.content) or {}
  80.  
  81.    for _, match in ipairs(matches) do
  82.       local member
  83.       if message.guild then
  84.          member = message.guild:getMember(message.author)
  85.       end
  86.       local mentions, queries = unpack(match)
  87.       local query = queries[1]
  88.       local command = commands[query .. '.lua']
  89.       local response = concat(mentions, ' ') .. '\n```text\n'
  90.       local template = '\n\nName: %s\nDescription: %s\nUsage: %s'
  91.  
  92.       if not command or query == '' then
  93.          response = response .. 'Luabot is an opensource bot written in Lua\nSee the source at https://github.com/ryanford-frontend/luabot-discord'
  94.          for name, info in pairs(commands) do
  95.             if member or info._ROLE ~= admin_role then
  96.                local authorized = info._ROLE ~= admin_role or info._ROLE == admin_role and member:hasRole(admin_role)
  97.                if authorized then
  98.                   response = response .. sf(template, name:sub(1, -5), info._DESCRIPTION, info._SIGNATURE)
  99.                end
  100.             end
  101.          end
  102.          response = response .. '\n```'
  103.          message.channel:send(response)
  104.       else
  105.          if member or command._ROLE ~= admin_role then
  106.             local authorized = command._ROLE ~= admin_role or command._ROLE == admin_role and member:hasRole(admin_role)
  107.             if authorized then
  108.                response = response .. sf(template, query, command._DESCRIPTION, concat({ command._SIGNATURE, command._HELP }, '\n\n'))
  109.                response = response .. '\n```'
  110.                message.channel:send(response)
  111.             end
  112.          end
  113.       end
  114.    end
  115. end}
  116.  
  117. mt.__index = mt
  118.  
  119. return setmetatable(help, mt)
RAW Paste Data
We use cookies for various purposes including analytics. By continuing to use Pastebin, you agree to our use of cookies as described in the Cookies Policy. OK, I Understand
 
Top