discorb 0.9.3 → 0.10.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (59) hide show
  1. checksums.yaml +4 -4
  2. data/.github/workflows/build_main.yml +2 -0
  3. data/Changelog.md +298 -247
  4. data/README.md +6 -6
  5. data/Rakefile +7 -1
  6. data/assets/banner.svg +101 -101
  7. data/docs/application_command.md +8 -7
  8. data/docs/cli/run.md +3 -3
  9. data/docs/extension.md +16 -22
  10. data/docs/license.md +5 -1
  11. data/examples/extension/main.rb +1 -1
  12. data/examples/extension/message_expander.rb +4 -6
  13. data/lib/discorb/app_command.rb +12 -10
  14. data/lib/discorb/application.rb +3 -3
  15. data/lib/discorb/asset.rb +2 -2
  16. data/lib/discorb/audit_logs.rb +7 -7
  17. data/lib/discorb/channel.rb +10 -10
  18. data/lib/discorb/client.rb +22 -23
  19. data/lib/discorb/common.rb +6 -25
  20. data/lib/discorb/components.rb +31 -3
  21. data/lib/discorb/embed.rb +2 -2
  22. data/lib/discorb/emoji.rb +3 -3
  23. data/lib/discorb/error.rb +2 -2
  24. data/lib/discorb/exe/init.rb +8 -8
  25. data/lib/discorb/exe/run.rb +1 -1
  26. data/lib/discorb/extend.rb +21 -0
  27. data/lib/discorb/extension.rb +60 -47
  28. data/lib/discorb/file.rb +19 -1
  29. data/lib/discorb/gateway.rb +8 -8
  30. data/lib/discorb/gateway_requests.rb +1 -1
  31. data/lib/discorb/guild.rb +7 -7
  32. data/lib/discorb/guild_template.rb +4 -4
  33. data/lib/discorb/http.rb +1 -1
  34. data/lib/discorb/integration.rb +3 -3
  35. data/lib/discorb/interaction.rb +36 -32
  36. data/lib/discorb/invite.rb +2 -2
  37. data/lib/discorb/log.rb +1 -1
  38. data/lib/discorb/member.rb +1 -1
  39. data/lib/discorb/message.rb +34 -10
  40. data/lib/discorb/modules.rb +15 -49
  41. data/lib/discorb/permission.rb +2 -2
  42. data/lib/discorb/presence.rb +8 -8
  43. data/lib/discorb/rate_limit.rb +1 -1
  44. data/lib/discorb/reaction.rb +1 -1
  45. data/lib/discorb/role.rb +2 -2
  46. data/lib/discorb/sticker.rb +3 -3
  47. data/lib/discorb/user.rb +2 -2
  48. data/lib/discorb/utils/colored_puts.rb +3 -3
  49. data/lib/discorb/utils.rb +1 -21
  50. data/lib/discorb/voice_state.rb +3 -3
  51. data/lib/discorb/webhook.rb +7 -8
  52. data/lib/discorb.rb +1 -1
  53. data/sig/discorb.rbs +2 -2
  54. data/template-replace/files/css/common.css +26 -0
  55. data/template-replace/files/favicon.png +0 -0
  56. data/template-replace/scripts/arrow.rb +7 -0
  57. data/template-replace/scripts/favicon.rb +9 -0
  58. data/template-replace/scripts/version.rb +20 -5
  59. metadata +5 -2
data/assets/banner.svg CHANGED
@@ -1,101 +1,101 @@
1
- <?xml version="1.0" encoding="utf-8"?>
2
- <!-- Generator: Adobe Illustrator 16.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
3
- <!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
4
- <svg version="1.1" id="レイヤー_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px"
5
- y="0px" width="1080px" height="150px" viewBox="0 0 1080 150" enable-background="new 0 0 1080 150" xml:space="preserve">
6
- <rect x="0" fill="#FFFFFF" width="1080" height="150"/>
7
- <g>
8
- <g>
9
- <defs>
10
- <rect id="SVGID_1_" x="283.667" y="-12.667" width="343.333" height="201.333"/>
11
- </defs>
12
- <clipPath id="SVGID_2_">
13
- <use xlink:href="#SVGID_1_" overflow="visible"/>
14
- </clipPath>
15
- <g clip-path="url(#SVGID_2_)">
16
- <g>
17
- <g>
18
- <path fill="#2E3338" d="M370.532,119.061c-13.503,0-21.564-10.312-21.564-27.582c0-18.542,9.872-30.524,25.148-30.524
19
- c5.187,0,10.446,0.915,14.433,2.509l3.429,1.372V31.79l6.393-1.006v86.997h-4.456l-1.936-12.146l-3.522,4.209
20
- C383.265,116.045,377.402,119.061,370.532,119.061z M374.501,65.554c-9.191,0-19.014,6.676-19.014,25.413
21
- c0,13.961,6.56,22.98,16.708,22.98c7.181,0,13.309-3.736,19.286-11.758l0.495-0.666V69.983l-1.358-0.697
22
- C385.253,66.53,381.034,65.554,374.501,65.554z"/>
23
- </g>
24
- <g>
25
- <path fill="#2E3338" d="M419.623,117.779V61.721h6.394v56.058H419.623z M422.884,44.433c-2.646,0-4.796-2.094-4.796-4.668
26
- c0-2.6,2.195-4.796,4.796-4.796c2.573,0,4.668,2.152,4.668,4.796C427.552,42.338,425.457,44.433,422.884,44.433z"/>
27
- </g>
28
- <g>
29
- <path fill="#2E3338" d="M463.332,119.061c-7.016,0-14.662-2.281-19.529-4.646l0.809-5.23
30
- c4.905,2.795,11.627,5.405,19.616,5.405c9.34,0,14.917-3.948,14.917-10.563c0-8.188-6.482-10.383-16.372-12.797
31
- c-13.937-3.485-18.19-7.314-18.19-16.389c0-8.611,7.639-14.397,19.006-14.397c6.173,0,11.984,1.055,17.305,3.139l-0.902,5.412
32
- c-5.417-2.532-11.33-3.95-16.659-3.95c-12.06,0-12.997,7.302-12.997,9.54c0,6.303,5.57,8.979,14.56,11.256
33
- c15.329,3.896,20.003,7.967,20.003,17.418C484.897,113.3,477.036,119.061,463.332,119.061z"/>
34
- </g>
35
- <g>
36
- <path fill="#2E3338" d="M523.745,119.061c-15.985,0-25.917-11.205-25.917-29.246c0-17.842,10.273-29.373,26.174-29.373
37
- c6.896,0,12.695,1.453,17.263,4.322l-0.821,5.493c-5.086-3.282-10.44-4.83-16.57-4.83c-12.043,0-19.524,9.296-19.524,24.262
38
- c0,15.271,7.776,24.389,20.805,24.389c6.138,0,11.114-1.451,15.996-4.758l0.746,4.591
39
- C536.669,117.51,531.15,119.061,523.745,119.061z"/>
40
- </g>
41
- <g>
42
- <path fill="#2E3338" d="M580.834,119.061c-15.512,0-25.533-11.479-25.533-29.246c0-17.842,10.021-29.373,25.533-29.373
43
- c15.743,0,25.916,11.53,25.916,29.373C606.75,107.581,596.577,119.061,580.834,119.061z M580.834,65.042
44
- c-11.729,0-19.015,9.492-19.015,24.772c0,15.049,7.463,24.772,19.015,24.772c11.964,0,19.396-9.491,19.396-24.772
45
- C600.23,74.766,592.616,65.042,580.834,65.042z"/>
46
- </g>
47
- <g>
48
- <path d="M623.652,117.779V61.721h4.444l2.615,16.91l3.563-5.661c3.16-5.019,8.634-11.016,17.176-12.309l0.981,5.953
49
- c-9.187,1.447-17.664,7.67-22.117,16.437l-0.271,0.533v34.195H623.652L623.652,117.779z"/>
50
- </g>
51
- <g>
52
- <path d="M688.224,118.549c-8.271,0-14.268-1.167-21.311-3.208V31.79l6.394-1.006V72.56l4.295-4.43
53
- c5.017-5.173,10.417-7.688,16.51-7.688c13.302,0,21.565,10.569,21.565,27.582C715.677,107.423,705.671,118.549,688.224,118.549
54
- z M692.447,65.554c-6.539,0-12.794,3.675-18.593,10.922l-0.548,0.686v33.855l1.64,0.602c3.981,1.461,7.108,2.201,13.148,2.201
55
- c9.607,0,21.062-4.387,21.062-25.284C709.156,74.575,702.598,65.554,692.447,65.554z"/>
56
- </g>
57
- </g>
58
- </g>
59
- </g>
60
- </g>
61
- <g>
62
- <g>
63
- <defs>
64
- <rect id="SVGID_3_" x="610.334" y="8" width="268" height="246"/>
65
- </defs>
66
- <clipPath id="SVGID_4_">
67
- <use xlink:href="#SVGID_3_" overflow="visible"/>
68
- </clipPath>
69
- <g clip-path="url(#SVGID_4_)">
70
- <g>
71
- <path fill="#2E3338" d="M391.781,120.279l-1.408-8.832c-4.607,5.505-10.88,10.113-19.841,10.113
72
- c-13.185,0-24.064-9.602-24.064-30.082c0-22.272,12.8-33.025,27.648-33.025c6.018,0,11.521,1.152,15.361,2.688v-31.49
73
- l11.393-1.792v92.42H391.781L391.781,120.279z M389.478,71.51c-4.736-2.432-8.448-3.456-14.977-3.456
74
- c-9.602,0-16.514,7.809-16.514,22.913c0,13.441,6.017,20.48,14.208,20.48c7.041,0,12.417-4.225,17.281-10.752L389.478,71.51
75
- L389.478,71.51z"/>
76
- <path fill="#2E3338" d="M422.884,46.933c-3.968,0-7.296-3.2-7.296-7.168c0-3.968,3.328-7.296,7.296-7.296
77
- s7.168,3.328,7.168,7.296C430.052,43.733,426.852,46.933,422.884,46.933z M417.123,120.279V59.221h11.394v61.058H417.123z"/>
78
- <path fill="#2E3338" d="M463.332,121.561c-8.064,0-17.025-2.815-22.273-5.76l1.664-10.754c5.76,3.969,13.185,7.041,21.505,7.041
79
- c7.808,0,12.417-2.943,12.417-8.064c0-5.633-3.456-7.68-14.465-10.367c-14.336-3.586-20.098-7.938-20.098-18.817
80
- c0-9.729,8.192-16.897,21.506-16.897c7.552,0,14.336,1.536,20.097,4.096l-1.792,10.752c-5.376-3.072-12.161-5.248-18.561-5.248
81
- c-6.913,0-10.498,2.688-10.498,7.04c0,4.096,3.072,6.4,12.673,8.832c15.104,3.841,21.889,8.193,21.889,19.842
82
- C487.397,114.393,479.076,121.561,463.332,121.561z"/>
83
- <path fill="#2E3338" d="M523.745,121.561c-16.385,0-28.417-11.393-28.417-31.746c0-20.864,12.801-31.873,28.674-31.873
84
- c8.96,0,15.359,2.304,19.968,5.632l-1.664,11.136c-5.632-4.608-11.393-6.784-18.433-6.784c-9.984,0-17.024,7.552-17.024,21.761
85
- c0,14.849,7.552,21.89,18.305,21.89c6.146,0,11.521-1.408,17.793-6.785l1.664,10.241
86
- C538.339,119.768,531.938,121.561,523.745,121.561z"/>
87
- <path fill="#2E3338" d="M580.834,121.561c-16.259,0-28.033-11.647-28.033-31.746c0-20.096,11.774-31.873,28.033-31.873
88
- c16.385,0,28.416,11.776,28.416,31.873C609.25,109.912,597.219,121.561,580.834,121.561z M580.834,67.542
89
- c-11.01,0-16.515,9.472-16.515,22.272c0,12.545,5.761,22.272,16.515,22.272c11.264,0,16.896-9.474,16.896-22.272
90
- C597.73,77.271,591.842,67.542,580.834,67.542z"/>
91
- <path fill="#CC342D" d="M632.545,84.184v36.098h-11.394v-61.06h9.088l1.92,12.417c4.354-6.913,11.394-13.185,21.377-13.697
92
- l1.793,10.88C645.217,69.334,636.641,76.118,632.545,84.184z"/>
93
- <path fill="#CC342D" d="M688.224,121.049c-9.217,0-15.745-1.408-23.811-3.841V29.652l11.394-1.792v38.53
94
- c4.096-4.224,9.984-8.448,18.305-8.448c13.186,0,24.065,9.729,24.065,30.082C718.177,110.296,705.888,121.049,688.224,121.049z
95
- M692.447,68.054c-6.399,0-12.032,4.224-16.641,9.984v31.233c3.84,1.408,6.656,2.049,12.288,2.049
96
- c11.905,0,18.562-7.041,18.562-22.785C706.656,75.222,700.64,68.054,692.447,68.054z"/>
97
- </g>
98
- </g>
99
- </g>
100
- </g>
101
- </svg>
1
+ <?xml version="1.0" encoding="utf-8"?>
2
+ <!-- Generator: Adobe Illustrator 16.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
3
+ <!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
4
+ <svg version="1.1" id="レイヤー_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px"
5
+ y="0px" width="1080px" height="150px" viewBox="0 0 1080 150" enable-background="new 0 0 1080 150" xml:space="preserve">
6
+ <rect x="0" fill="#FFFFFF" width="1080" height="150"/>
7
+ <g>
8
+ <g>
9
+ <defs>
10
+ <rect id="SVGID_1_" x="283.667" y="-12.667" width="343.333" height="201.333"/>
11
+ </defs>
12
+ <clipPath id="SVGID_2_">
13
+ <use xlink:href="#SVGID_1_" overflow="visible"/>
14
+ </clipPath>
15
+ <g clip-path="url(#SVGID_2_)">
16
+ <g>
17
+ <g>
18
+ <path fill="#2E3338" d="M370.532,119.061c-13.503,0-21.564-10.312-21.564-27.582c0-18.542,9.872-30.524,25.148-30.524
19
+ c5.187,0,10.446,0.915,14.433,2.509l3.429,1.372V31.79l6.393-1.006v86.997h-4.456l-1.936-12.146l-3.522,4.209
20
+ C383.265,116.045,377.402,119.061,370.532,119.061z M374.501,65.554c-9.191,0-19.014,6.676-19.014,25.413
21
+ c0,13.961,6.56,22.98,16.708,22.98c7.181,0,13.309-3.736,19.286-11.758l0.495-0.666V69.983l-1.358-0.697
22
+ C385.253,66.53,381.034,65.554,374.501,65.554z"/>
23
+ </g>
24
+ <g>
25
+ <path fill="#2E3338" d="M419.623,117.779V61.721h6.394v56.058H419.623z M422.884,44.433c-2.646,0-4.796-2.094-4.796-4.668
26
+ c0-2.6,2.195-4.796,4.796-4.796c2.573,0,4.668,2.152,4.668,4.796C427.552,42.338,425.457,44.433,422.884,44.433z"/>
27
+ </g>
28
+ <g>
29
+ <path fill="#2E3338" d="M463.332,119.061c-7.016,0-14.662-2.281-19.529-4.646l0.809-5.23
30
+ c4.905,2.795,11.627,5.405,19.616,5.405c9.34,0,14.917-3.948,14.917-10.563c0-8.188-6.482-10.383-16.372-12.797
31
+ c-13.937-3.485-18.19-7.314-18.19-16.389c0-8.611,7.639-14.397,19.006-14.397c6.173,0,11.984,1.055,17.305,3.139l-0.902,5.412
32
+ c-5.417-2.532-11.33-3.95-16.659-3.95c-12.06,0-12.997,7.302-12.997,9.54c0,6.303,5.57,8.979,14.56,11.256
33
+ c15.329,3.896,20.003,7.967,20.003,17.418C484.897,113.3,477.036,119.061,463.332,119.061z"/>
34
+ </g>
35
+ <g>
36
+ <path fill="#2E3338" d="M523.745,119.061c-15.985,0-25.917-11.205-25.917-29.246c0-17.842,10.273-29.373,26.174-29.373
37
+ c6.896,0,12.695,1.453,17.263,4.322l-0.821,5.493c-5.086-3.282-10.44-4.83-16.57-4.83c-12.043,0-19.524,9.296-19.524,24.262
38
+ c0,15.271,7.776,24.389,20.805,24.389c6.138,0,11.114-1.451,15.996-4.758l0.746,4.591
39
+ C536.669,117.51,531.15,119.061,523.745,119.061z"/>
40
+ </g>
41
+ <g>
42
+ <path fill="#2E3338" d="M580.834,119.061c-15.512,0-25.533-11.479-25.533-29.246c0-17.842,10.021-29.373,25.533-29.373
43
+ c15.743,0,25.916,11.53,25.916,29.373C606.75,107.581,596.577,119.061,580.834,119.061z M580.834,65.042
44
+ c-11.729,0-19.015,9.492-19.015,24.772c0,15.049,7.463,24.772,19.015,24.772c11.964,0,19.396-9.491,19.396-24.772
45
+ C600.23,74.766,592.616,65.042,580.834,65.042z"/>
46
+ </g>
47
+ <g>
48
+ <path d="M623.652,117.779V61.721h4.444l2.615,16.91l3.563-5.661c3.16-5.019,8.634-11.016,17.176-12.309l0.981,5.953
49
+ c-9.187,1.447-17.664,7.67-22.117,16.437l-0.271,0.533v34.195H623.652L623.652,117.779z"/>
50
+ </g>
51
+ <g>
52
+ <path d="M688.224,118.549c-8.271,0-14.268-1.167-21.311-3.208V31.79l6.394-1.006V72.56l4.295-4.43
53
+ c5.017-5.173,10.417-7.688,16.51-7.688c13.302,0,21.565,10.569,21.565,27.582C715.677,107.423,705.671,118.549,688.224,118.549
54
+ z M692.447,65.554c-6.539,0-12.794,3.675-18.593,10.922l-0.548,0.686v33.855l1.64,0.602c3.981,1.461,7.108,2.201,13.148,2.201
55
+ c9.607,0,21.062-4.387,21.062-25.284C709.156,74.575,702.598,65.554,692.447,65.554z"/>
56
+ </g>
57
+ </g>
58
+ </g>
59
+ </g>
60
+ </g>
61
+ <g>
62
+ <g>
63
+ <defs>
64
+ <rect id="SVGID_3_" x="610.334" y="8" width="268" height="246"/>
65
+ </defs>
66
+ <clipPath id="SVGID_4_">
67
+ <use xlink:href="#SVGID_3_" overflow="visible"/>
68
+ </clipPath>
69
+ <g clip-path="url(#SVGID_4_)">
70
+ <g>
71
+ <path fill="#2E3338" d="M391.781,120.279l-1.408-8.832c-4.607,5.505-10.88,10.113-19.841,10.113
72
+ c-13.185,0-24.064-9.602-24.064-30.082c0-22.272,12.8-33.025,27.648-33.025c6.018,0,11.521,1.152,15.361,2.688v-31.49
73
+ l11.393-1.792v92.42H391.781L391.781,120.279z M389.478,71.51c-4.736-2.432-8.448-3.456-14.977-3.456
74
+ c-9.602,0-16.514,7.809-16.514,22.913c0,13.441,6.017,20.48,14.208,20.48c7.041,0,12.417-4.225,17.281-10.752L389.478,71.51
75
+ L389.478,71.51z"/>
76
+ <path fill="#2E3338" d="M422.884,46.933c-3.968,0-7.296-3.2-7.296-7.168c0-3.968,3.328-7.296,7.296-7.296
77
+ s7.168,3.328,7.168,7.296C430.052,43.733,426.852,46.933,422.884,46.933z M417.123,120.279V59.221h11.394v61.058H417.123z"/>
78
+ <path fill="#2E3338" d="M463.332,121.561c-8.064,0-17.025-2.815-22.273-5.76l1.664-10.754c5.76,3.969,13.185,7.041,21.505,7.041
79
+ c7.808,0,12.417-2.943,12.417-8.064c0-5.633-3.456-7.68-14.465-10.367c-14.336-3.586-20.098-7.938-20.098-18.817
80
+ c0-9.729,8.192-16.897,21.506-16.897c7.552,0,14.336,1.536,20.097,4.096l-1.792,10.752c-5.376-3.072-12.161-5.248-18.561-5.248
81
+ c-6.913,0-10.498,2.688-10.498,7.04c0,4.096,3.072,6.4,12.673,8.832c15.104,3.841,21.889,8.193,21.889,19.842
82
+ C487.397,114.393,479.076,121.561,463.332,121.561z"/>
83
+ <path fill="#2E3338" d="M523.745,121.561c-16.385,0-28.417-11.393-28.417-31.746c0-20.864,12.801-31.873,28.674-31.873
84
+ c8.96,0,15.359,2.304,19.968,5.632l-1.664,11.136c-5.632-4.608-11.393-6.784-18.433-6.784c-9.984,0-17.024,7.552-17.024,21.761
85
+ c0,14.849,7.552,21.89,18.305,21.89c6.146,0,11.521-1.408,17.793-6.785l1.664,10.241
86
+ C538.339,119.768,531.938,121.561,523.745,121.561z"/>
87
+ <path fill="#2E3338" d="M580.834,121.561c-16.259,0-28.033-11.647-28.033-31.746c0-20.096,11.774-31.873,28.033-31.873
88
+ c16.385,0,28.416,11.776,28.416,31.873C609.25,109.912,597.219,121.561,580.834,121.561z M580.834,67.542
89
+ c-11.01,0-16.515,9.472-16.515,22.272c0,12.545,5.761,22.272,16.515,22.272c11.264,0,16.896-9.474,16.896-22.272
90
+ C597.73,77.271,591.842,67.542,580.834,67.542z"/>
91
+ <path fill="#CC342D" d="M632.545,84.184v36.098h-11.394v-61.06h9.088l1.92,12.417c4.354-6.913,11.394-13.185,21.377-13.697
92
+ l1.793,10.88C645.217,69.334,636.641,76.118,632.545,84.184z"/>
93
+ <path fill="#CC342D" d="M688.224,121.049c-9.217,0-15.745-1.408-23.811-3.841V29.652l11.394-1.792v38.53
94
+ c4.096-4.224,9.984-8.448,18.305-8.448c13.186,0,24.065,9.729,24.065,30.082C718.177,110.296,705.888,121.049,688.224,121.049z
95
+ M692.447,68.054c-6.399,0-12.032,4.224-16.641,9.984v31.233c3.84,1.408,6.656,2.049,12.288,2.049
96
+ c11.905,0,18.562-7.041,18.562-22.785C706.656,75.222,700.64,68.054,692.447,68.054z"/>
97
+ </g>
98
+ </g>
99
+ </g>
100
+ </g>
101
+ </svg>
@@ -60,13 +60,14 @@ In `options`, hash should be like this:
60
60
  }
61
61
  }
62
62
  ```
63
-
64
- | Key | Description |
65
- | --- | --- |
66
- | `type` | The type of the argument. |
67
- | `required` | Whether the argument is required. |
68
- | `description` | The description of the argument. |
69
- | `choices` | The choices of the argument. |
63
+ | Key | Type | Description |
64
+ | --- | --- | --- |
65
+ | `:description` | `String` | Description of the option. |
66
+ | `:required` | Whether the argument is required. `optional` will be used if not specified. |
67
+ | `:optional` | Whether the argument is optional. `required` will be used if not specified. |
68
+ | `:type` | `Object` | Type of the option. |
69
+ | `:choice` | `Hash{String => String, Integer, Float}` | Type of the option. |
70
+ | `:default` | `Object` | Default value of the option. |
70
71
 
71
72
  `choices` should be unspecified if you don't want to use it.
72
73
  `choices` is hash like this:
data/docs/cli/run.md CHANGED
@@ -19,9 +19,9 @@ The script to run. Defaults to `main.rb`.
19
19
 
20
20
  ### Options
21
21
 
22
- #### `-d`, `--deamon`
22
+ #### `-t`, `--title`
23
23
 
24
- Run the client in deamon mode.
24
+ The title of the process.
25
25
 
26
26
  #### `-l`, `--log-level`
27
27
 
@@ -51,6 +51,6 @@ If not specified, the default will be:
51
51
 
52
52
  Whether to setup application commands.
53
53
 
54
- #### `-t`, `--token`
54
+ #### `-e`, `--env`
55
55
 
56
56
  The name of the environment variable to use for token, or just `-t` or `--token` for intractive prompt.
data/docs/extension.md CHANGED
@@ -2,16 +2,16 @@
2
2
 
3
3
  # Extension
4
4
 
5
- Extension allows you to split your code into multiple files.
5
+ Extension allows you to seperate your code from the main application.
6
+
7
+ # @since
6
8
 
7
9
  ## Make a new extension
8
10
 
9
- Make a new module, and extend {Discorb::Extension}.
11
+ Make a new class that extends Extension.
10
12
 
11
13
  ```ruby
12
- module MyExtension
13
- extend Discorb::Extension
14
-
14
+ class MyExtension < Discorb::Extension
15
15
  # ...
16
16
  end
17
17
  ```
@@ -21,27 +21,25 @@ end
21
21
  Use {Discorb::Extension.event} to register event, or {Discorb::Extension.once_event} to register event only once.
22
22
 
23
23
  ```ruby
24
- module MyExtension
25
- extend Discorb::Extension
26
-
24
+ class MyExtension < Discorb::Extension
27
25
  event :message do |message|
28
26
  # ...
29
27
  end
30
28
 
31
- once_event :ready do |message|
29
+ once_event :standby do |message|
32
30
  # ...
33
31
  end
34
32
  end
35
33
  ```
36
34
 
35
+ Note block will be binded to the extension instance.
36
+
37
37
  ## Register Command
38
38
 
39
- Since v0.5.2, {Discorb::Extension} includes {Discorb::ApplicationCommand::Handler} module, so you can register command with {Discorb::ApplicationCommand::Handler#slash} and {Discorb::ApplicationCommand::Handler#slash_group}.
39
+ Use `Discorb::Extension.command` to register command, see {Discorb::ApplicationCommand::Handler} for more information.
40
40
 
41
41
  ```ruby
42
- module MyExtension
43
- extend Discorb::Extension
44
-
42
+ class MyExtension < Discorb::Extension
45
43
  slash("command", "Command") do |interaction|
46
44
  # ...
47
45
  end
@@ -63,18 +61,16 @@ end
63
61
 
64
62
  ## Load extension
65
63
 
66
- Use {Discorb::Client#extend} to load extension.
64
+ Use {Discorb::Client#load_extension} to load extension.
67
65
 
68
66
  ```ruby
69
- module MyExtension
70
- extend Discorb::Extension
71
-
67
+ class MyExtension < Discorb::Extension
72
68
  event :message do |message|
73
69
  # ...
74
70
  end
75
71
  end
76
72
 
77
- client.extend MyExtension
73
+ client.load_extension(MyExtension)
78
74
  ```
79
75
 
80
76
  ## Access Client from extension
@@ -82,10 +78,8 @@ client.extend MyExtension
82
78
  You can access {Discorb::Client} from extension with `@client`.
83
79
 
84
80
  ```ruby
85
- module MyExtension
86
- extend Discorb::Extension
87
-
88
- event :ready do |message|
81
+ class MyExtension < Discorb::Extension
82
+ event :standby do |message|
89
83
  puts "Logged in as #{@client.user}"
90
84
  end
91
85
  end
data/docs/license.md CHANGED
@@ -4,4 +4,8 @@
4
4
 
5
5
  discorb is licensed under the [MIT license](https://opensource.org/licenses/MIT).
6
6
 
7
- {include:file:License.txt}
7
+ ----
8
+
9
+ {include:file:LICENSE.txt}
10
+
11
+ ----
@@ -7,6 +7,6 @@ client.once :standby do
7
7
  puts "Logged in as #{client.user}"
8
8
  end
9
9
 
10
- client.extend(MessageExpander)
10
+ client.load_extension(MessageExpander)
11
11
 
12
12
  client.run(ENV["DISCORD_BOT_TOKEN"])
@@ -1,9 +1,7 @@
1
1
  require "discorb"
2
2
 
3
- module MessageExpander
4
- extend Discorb::Extension
5
-
6
- @message_regex = Regexp.new(
3
+ class MessageExpander < Discorb::Extension
4
+ @@message_regex = Regexp.new(
7
5
  '(?!<)https://(?:ptb\.|canary\.)?discord(?:app)?\.com/channels/' \
8
6
  "(?<guild>[0-9]{18})/(?<channel>[0-9]{18})/(?<message>[0-9]{18})(?!>)"
9
7
  )
@@ -11,7 +9,7 @@ module MessageExpander
11
9
  event :message do |message|
12
10
  next if message.author.bot?
13
11
 
14
- message.content.to_enum(:scan, @message_regex).map { Regexp.last_match }.each do |match|
12
+ message.content.to_enum(:scan, @@message_regex).map { Regexp.last_match }.each do |match|
15
13
  ch = @client.channels[match[:channel]]
16
14
  next if ch.nil?
17
15
 
@@ -27,7 +25,7 @@ module MessageExpander
27
25
  author: Discorb::Embed::Author.new(
28
26
  url_message.author.name,
29
27
  url: url_message.jump_url,
30
- icon: url_message.author.display_avatar.url,
28
+ icon: url_message.author.avatar.url,
31
29
  ),
32
30
  footer: Discorb::Embed::Footer.new(
33
31
  "#{url_message.guild.name} / #{ch.name}",
@@ -20,9 +20,11 @@ module Discorb
20
20
  # | Key | Type | Description |
21
21
  # | --- | --- | --- |
22
22
  # | `:description` | `String` | Description of the option. |
23
- # | `:optional` | `Boolean` | Whether the option is optional or not. |
23
+ # | `:required` | Whether the argument is required. `optional` will be used if not specified. |
24
+ # | `:optional` | Whether the argument is optional. `required` will be used if not specified. |
24
25
  # | `:type` | `Object` | Type of the option. |
25
26
  # | `:choice` | `Hash{String => String, Integer, Float}` | Type of the option. |
27
+ # | `:default` | `Object` | Default value of the option. |
26
28
  #
27
29
  # @param [Array<#to_s>, false, nil] guild_ids Guild IDs to set the command to. `false` to global command, `nil` to use default.
28
30
  # @param [Proc] block Command block.
@@ -157,7 +159,7 @@ module Discorb
157
159
  3 => :message,
158
160
  }.freeze
159
161
 
160
- # @!visibility private
162
+ # @private
161
163
  def initialize(name, guild_ids, block, type)
162
164
  @name = name
163
165
  @guild_ids = guild_ids&.map(&:to_s)
@@ -168,7 +170,7 @@ module Discorb
168
170
  @id_map = Discorb::Dictionary.new
169
171
  end
170
172
 
171
- # @!visibility private
173
+ # @private
172
174
  def to_hash
173
175
  {
174
176
  name: @name,
@@ -186,7 +188,7 @@ module Discorb
186
188
  # @return [Hash{String => Hash}] The options of the command.
187
189
  attr_reader :options
188
190
 
189
- # @!visibility private
191
+ # @private
190
192
  def initialize(name, description, options, guild_ids, block, type, parent)
191
193
  super(name, guild_ids, block, type)
192
194
  @description = description
@@ -205,7 +207,7 @@ module Discorb
205
207
  (@parent + " " + @name).strip
206
208
  end
207
209
 
208
- # @!visibility private
210
+ # @private
209
211
  def to_hash
210
212
  options_payload = options.map do |name, value|
211
213
  ret = {
@@ -231,7 +233,7 @@ module Discorb
231
233
  end,
232
234
  name: name,
233
235
  description: value[:description],
234
- required: !value[:optional],
236
+ required: value[:required].nil? ? !value[:optional] : value[:required],
235
237
  }
236
238
  if value[:choices]
237
239
  ret[:choices] = value[:choices].map { |t| { name: t[0], value: t[1] } }
@@ -256,7 +258,7 @@ module Discorb
256
258
  # @return [String] The description of the command.
257
259
  attr_reader :description
258
260
 
259
- # @!visibility private
261
+ # @private
260
262
  def initialize(name, description, guild_ids, type, client)
261
263
  super(name, guild_ids, block, type)
262
264
  @description = description
@@ -307,7 +309,7 @@ module Discorb
307
309
  @name
308
310
  end
309
311
 
310
- # @!visibility private
312
+ # @private
311
313
  def to_hash
312
314
  options_payload = @commands.map do |command|
313
315
  if command.is_a?(SlashCommand)
@@ -345,7 +347,7 @@ module Discorb
345
347
  # @return [Array<Discorb::ApplicationCommand::Command::SlashCommand>] The subcommands of the command.
346
348
  attr_reader :commands
347
349
 
348
- # @!visibility private
350
+ # @private
349
351
  def initialize(name, description, parent, client)
350
352
  super(name, description, [], 1, client)
351
353
 
@@ -371,7 +373,7 @@ module Discorb
371
373
  end
372
374
 
373
375
  class << self
374
- # @!visibility private
376
+ # @private
375
377
  attr_reader :types
376
378
  end
377
379
  end
@@ -28,7 +28,7 @@ module Discorb
28
28
  attr_reader :bot_require_code_grant
29
29
  alias bot_require_code_grant? bot_require_code_grant
30
30
 
31
- # @!visibility private
31
+ # @private
32
32
  def initialize(client, data)
33
33
  @client = client
34
34
  @data = data
@@ -67,7 +67,7 @@ module Discorb
67
67
  # @return [Discorb::Application::Team::Member] The team's member.
68
68
  attr_reader :members
69
69
 
70
- # @!visibility private
70
+ # @private
71
71
  def initialize(client, data)
72
72
  @client = client
73
73
  @id = Snowflake.new(data[:id])
@@ -148,7 +148,7 @@ module Discorb
148
148
  end
149
149
 
150
150
  class << self
151
- # @!visibility private
151
+ # @private
152
152
  attr_reader :membership_state
153
153
  end
154
154
  end
data/lib/discorb/asset.rb CHANGED
@@ -11,7 +11,7 @@ module Discorb
11
11
  # @!attribute [r] animated?
12
12
  # @return [Boolean] Whether the asset is animated.
13
13
 
14
- # @!visibility private
14
+ # @private
15
15
  def initialize(target, hash, path: nil)
16
16
  @hash = hash
17
17
  @target = target
@@ -63,7 +63,7 @@ module Discorb
63
63
  # @!attribute [r] animated?
64
64
  # @return [false] For compatibility with {Asset}, always `false`.
65
65
 
66
- # @!visibility private
66
+ # @private
67
67
  def initialize(discriminator)
68
68
  @discriminator = discriminator.to_s.rjust(4, "0")
69
69
  end
@@ -14,7 +14,7 @@ module Discorb
14
14
  # @return [Array<Discorb::AuditLog::Entry>] The entries in this audit log.
15
15
  attr_reader :entries
16
16
 
17
- # @!visibility private
17
+ # @private
18
18
  def initialize(client, data, guild)
19
19
  @client = client
20
20
  @guild = guild
@@ -105,7 +105,7 @@ module Discorb
105
105
  # @!attribute [r] user
106
106
  # @return [Discorb::User] The user who performed the action.
107
107
 
108
- # @!visibility private
108
+ # @private
109
109
  @events = {
110
110
  1 => :guild_update,
111
111
  10 => :channel_create,
@@ -153,7 +153,7 @@ module Discorb
153
153
  112 => :thread_delete
154
154
  }.freeze
155
155
 
156
- # @!visibility private
156
+ # @private
157
157
  @converts = {
158
158
  channel: ->(client, id, _guild_id) { client.channels[id] },
159
159
  thread: ->(client, id, _guild_id) { client.channels[id] },
@@ -163,7 +163,7 @@ module Discorb
163
163
  message: ->(client, id, _guild_id) { client.messages[id] }
164
164
  }
165
165
 
166
- # @!visibility private
166
+ # @private
167
167
  def initialize(client, data, guild_id)
168
168
  @client = client
169
169
  @guild_id = Snowflake.new(guild_id)
@@ -217,7 +217,7 @@ module Discorb
217
217
  attr_reader :data
218
218
 
219
219
  #
220
- # @!visibility private
220
+ # @private
221
221
  #
222
222
  def initialize(data)
223
223
  @data = data.map { |d| [d[:key].to_sym, d] }.to_h
@@ -264,7 +264,7 @@ module Discorb
264
264
  # @return [Object] The new value of the change.
265
265
  attr_reader :new_value
266
266
 
267
- # @!visibility private
267
+ # @private
268
268
  def initialize(data)
269
269
  @key = data[:key].to_sym
270
270
  method = case @key.to_s
@@ -309,7 +309,7 @@ module Discorb
309
309
  # @return [Discorb::Integration::Account] The account of the integration.
310
310
  attr_reader :account
311
311
 
312
- # @!visibility private
312
+ # @private
313
313
  def initialize(data)
314
314
  @id = Snowflake.new(data[:id])
315
315
  @type = data[:type].to_sym