Advertisement
Guest User

Untitled

a guest
Jul 24th, 2019
120
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Lua 7.83 KB | None | 0 0
  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)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement