issola 0.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +7 -0
- data/.env.development.dist +1 -0
- data/.gitignore +2 -0
- data/CHANGELOG.md +0 -0
- data/Dockerfile +0 -0
- data/Gemfile +1 -0
- data/Gemfile.lock +57 -0
- data/LICENSE +0 -0
- data/README.md +0 -0
- data/Rakefile +0 -0
- data/bin/boot.rb +21 -0
- data/bin/issola.rb +25 -0
- data/docker-compose.yml +0 -0
- data/docker-entrypoint.sh +0 -0
- data/lib/issola.rb +4 -0
- data/lib/issola/bot.rb +29 -0
- data/lib/issola/command.rb +4 -0
- data/lib/issola/command/builder.rb +23 -0
- data/lib/issola/command/command.rb +12 -0
- data/lib/issola/command/handler.rb +32 -0
- data/lib/issola/command/processor.rb +7 -0
- data/lib/issola/config.rb +11 -0
- metadata +109 -0
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA256:
|
3
|
+
metadata.gz: a4d70788260a4bcf21283cb2de722cb483f0fbf6832b9dcfb4da0e6a5c36cb12
|
4
|
+
data.tar.gz: 65876b15387f7e9c3e6568bf070a09f44d10ac9e8584a28a1c5b543a9bc59be1
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: 0a2350813ec9d0d47f778b3ce714e236d13c780a1aa39de2e028ca646724bb527998ddd33535f6ed6ebfe80901227dcf8fb34fd2fea5147d012c793f1b0de50d
|
7
|
+
data.tar.gz: 7f359b3838104c6921d2dedf985d7bbd4a733476bdffb61310ba160e516c070de0abfe8fe10b4c6264b0c9b462085c317736a14ed3ac649e52007137f1b0b84a
|
@@ -0,0 +1 @@
|
|
1
|
+
DISCORD_TOKEN=
|
data/.gitignore
ADDED
data/CHANGELOG.md
ADDED
File without changes
|
data/Dockerfile
ADDED
File without changes
|
data/Gemfile
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
gemspec
|
data/Gemfile.lock
ADDED
@@ -0,0 +1,57 @@
|
|
1
|
+
PATH
|
2
|
+
remote: .
|
3
|
+
specs:
|
4
|
+
issola (0.0.0)
|
5
|
+
discordrb (~> 3.3.0)
|
6
|
+
|
7
|
+
GEM
|
8
|
+
remote: https://rubygems.org/
|
9
|
+
specs:
|
10
|
+
discordrb (3.3.0)
|
11
|
+
discordrb-webhooks (~> 3.3.0)
|
12
|
+
ffi (>= 1.9.24)
|
13
|
+
opus-ruby
|
14
|
+
rbnacl (~> 3.4.0)
|
15
|
+
rest-client (>= 2.1.0.rc1)
|
16
|
+
websocket-client-simple (>= 0.3.0)
|
17
|
+
discordrb-webhooks (3.3.0)
|
18
|
+
rest-client (>= 2.1.0.rc1)
|
19
|
+
domain_name (0.5.20180417)
|
20
|
+
unf (>= 0.0.5, < 1.0.0)
|
21
|
+
dotenv (2.5.0)
|
22
|
+
event_emitter (0.2.6)
|
23
|
+
ffi (1.9.25)
|
24
|
+
http-accept (1.7.0)
|
25
|
+
http-cookie (1.0.3)
|
26
|
+
domain_name (~> 0.5)
|
27
|
+
mime-types (3.2.2)
|
28
|
+
mime-types-data (~> 3.2015)
|
29
|
+
mime-types-data (3.2018.0812)
|
30
|
+
netrc (0.11.0)
|
31
|
+
opus-ruby (1.0.1)
|
32
|
+
ffi
|
33
|
+
rbnacl (3.4.0)
|
34
|
+
ffi
|
35
|
+
rest-client (2.1.0.rc1)
|
36
|
+
http-accept (>= 1.7.0, < 2.0)
|
37
|
+
http-cookie (>= 1.0.2, < 2.0)
|
38
|
+
mime-types (>= 1.16, < 4.0)
|
39
|
+
netrc (~> 0.8)
|
40
|
+
unf (0.1.4)
|
41
|
+
unf_ext
|
42
|
+
unf_ext (0.0.7.5)
|
43
|
+
websocket (1.2.8)
|
44
|
+
websocket-client-simple (0.3.0)
|
45
|
+
event_emitter
|
46
|
+
websocket
|
47
|
+
|
48
|
+
PLATFORMS
|
49
|
+
ruby
|
50
|
+
|
51
|
+
DEPENDENCIES
|
52
|
+
bundler
|
53
|
+
dotenv
|
54
|
+
issola!
|
55
|
+
|
56
|
+
BUNDLED WITH
|
57
|
+
1.16.1
|
data/LICENSE
ADDED
File without changes
|
data/README.md
ADDED
File without changes
|
data/Rakefile
ADDED
File without changes
|
data/bin/boot.rb
ADDED
@@ -0,0 +1,21 @@
|
|
1
|
+
$LOAD_PATH.unshift 'lib'
|
2
|
+
|
3
|
+
APPLICATION_ENV = ENV.fetch('APPLICATION_ENV', 'development')
|
4
|
+
|
5
|
+
require 'bundler'
|
6
|
+
Bundler.require(:default, APPLICATION_ENV)
|
7
|
+
|
8
|
+
# Ignore all warnings about uninitialized instane variables, as `sequel`
|
9
|
+
# generates plenty of those.
|
10
|
+
Warning.ignore(/instance variable @\w+ not initialized/)
|
11
|
+
|
12
|
+
# Not limiting to specific environments, as we don't know which envs it might be used in.
|
13
|
+
if Object.const_defined?(:Dotenv)
|
14
|
+
env_file = ".env.#{ APPLICATION_ENV }"
|
15
|
+
puts "Loading env-specific env variables from #{ env_file }"
|
16
|
+
Dotenv.load env_file
|
17
|
+
else
|
18
|
+
puts 'Dotenv not available, skipping.'
|
19
|
+
end
|
20
|
+
|
21
|
+
require 'issola'
|
data/bin/issola.rb
ADDED
@@ -0,0 +1,25 @@
|
|
1
|
+
$LOAD_PATH.unshift '.'
|
2
|
+
require 'bin/boot'
|
3
|
+
|
4
|
+
class InternalCommands
|
5
|
+
def register(cmd_handler)
|
6
|
+
cmd_handler.register do |cmd|
|
7
|
+
cmd.key :help
|
8
|
+
cmd.action do |event|
|
9
|
+
puts "Starting command :)"
|
10
|
+
event << 'Help help!'
|
11
|
+
end
|
12
|
+
end
|
13
|
+
end
|
14
|
+
end
|
15
|
+
|
16
|
+
puts 'Starting bot'
|
17
|
+
|
18
|
+
bot = Issola::Bot.new(
|
19
|
+
token: Issola::Config::Discord::TOKEN
|
20
|
+
)
|
21
|
+
|
22
|
+
bot.register(InternalCommands.new)
|
23
|
+
|
24
|
+
puts "Invite me: #{ bot.invite_url }"
|
25
|
+
bot.run
|
data/docker-compose.yml
ADDED
File without changes
|
File without changes
|
data/lib/issola.rb
ADDED
data/lib/issola/bot.rb
ADDED
@@ -0,0 +1,29 @@
|
|
1
|
+
require 'discordrb'
|
2
|
+
|
3
|
+
module Issola
|
4
|
+
class Bot
|
5
|
+
def initialize(token:)
|
6
|
+
@bot = Discordrb::Bot.new(
|
7
|
+
token: token,
|
8
|
+
)
|
9
|
+
|
10
|
+
@command_handler = Command::Handler.new
|
11
|
+
|
12
|
+
@bot.message(start_with: Config::Bot::COMMAND_PREFIX) do |event|
|
13
|
+
@command_handler.handle(event)
|
14
|
+
end
|
15
|
+
end
|
16
|
+
|
17
|
+
def invite_url
|
18
|
+
@bot.invite_url
|
19
|
+
end
|
20
|
+
|
21
|
+
def register(obj)
|
22
|
+
obj.register(@command_handler)
|
23
|
+
end
|
24
|
+
|
25
|
+
def run
|
26
|
+
@bot.run
|
27
|
+
end
|
28
|
+
end
|
29
|
+
end
|
@@ -0,0 +1,23 @@
|
|
1
|
+
module Issola
|
2
|
+
module Command
|
3
|
+
class Builder
|
4
|
+
def key(key)
|
5
|
+
@key = key.to_s
|
6
|
+
end
|
7
|
+
|
8
|
+
def action(&blk)
|
9
|
+
@action = blk
|
10
|
+
end
|
11
|
+
|
12
|
+
def command
|
13
|
+
raise ArgumentError, 'Unable to build command, missing attributes' unless valid?
|
14
|
+
|
15
|
+
Command.new(key: @key, action: @action)
|
16
|
+
end
|
17
|
+
|
18
|
+
def valid?
|
19
|
+
@key && @action
|
20
|
+
end
|
21
|
+
end
|
22
|
+
end
|
23
|
+
end
|
@@ -0,0 +1,32 @@
|
|
1
|
+
module Issola
|
2
|
+
module Command
|
3
|
+
class Handler
|
4
|
+
def initialize
|
5
|
+
@commands = {}
|
6
|
+
end
|
7
|
+
|
8
|
+
def register
|
9
|
+
builder = Builder.new
|
10
|
+
|
11
|
+
yield builder
|
12
|
+
raise ArgumentError, 'Unable to register command, required attribute(s) missing.' unless builder.valid?
|
13
|
+
|
14
|
+
cmd = builder.command
|
15
|
+
@commands[cmd.key] = cmd
|
16
|
+
end
|
17
|
+
|
18
|
+
def handle(event)
|
19
|
+
tokens = event.message.content.split(' ')
|
20
|
+
puts "Checking for command in message: #{ tokens.inspect }"
|
21
|
+
|
22
|
+
# Get rid of command prefix
|
23
|
+
key = tokens.first[1..-1]
|
24
|
+
cmd = @commands[key]
|
25
|
+
if cmd
|
26
|
+
puts "Found command!"
|
27
|
+
cmd.action.call(event)
|
28
|
+
end
|
29
|
+
end
|
30
|
+
end
|
31
|
+
end
|
32
|
+
end
|
metadata
ADDED
@@ -0,0 +1,109 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: issola
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.0.0
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- Michael Senn
|
8
|
+
autorequire:
|
9
|
+
bindir: bin
|
10
|
+
cert_chain: []
|
11
|
+
date: 2018-12-08 00:00:00.000000000 Z
|
12
|
+
dependencies:
|
13
|
+
- !ruby/object:Gem::Dependency
|
14
|
+
name: discordrb
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
16
|
+
requirements:
|
17
|
+
- - "~>"
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: 3.3.0
|
20
|
+
type: :runtime
|
21
|
+
prerelease: false
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
23
|
+
requirements:
|
24
|
+
- - "~>"
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
version: 3.3.0
|
27
|
+
- !ruby/object:Gem::Dependency
|
28
|
+
name: bundler
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
30
|
+
requirements:
|
31
|
+
- - ">="
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: '0'
|
34
|
+
type: :development
|
35
|
+
prerelease: false
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
37
|
+
requirements:
|
38
|
+
- - ">="
|
39
|
+
- !ruby/object:Gem::Version
|
40
|
+
version: '0'
|
41
|
+
- !ruby/object:Gem::Dependency
|
42
|
+
name: dotenv
|
43
|
+
requirement: !ruby/object:Gem::Requirement
|
44
|
+
requirements:
|
45
|
+
- - ">="
|
46
|
+
- !ruby/object:Gem::Version
|
47
|
+
version: '0'
|
48
|
+
type: :development
|
49
|
+
prerelease: false
|
50
|
+
version_requirements: !ruby/object:Gem::Requirement
|
51
|
+
requirements:
|
52
|
+
- - ">="
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: '0'
|
55
|
+
description:
|
56
|
+
email:
|
57
|
+
- michael@morrolan.ch
|
58
|
+
executables:
|
59
|
+
- boot.rb
|
60
|
+
- issola.rb
|
61
|
+
extensions: []
|
62
|
+
extra_rdoc_files: []
|
63
|
+
files:
|
64
|
+
- ".env.development.dist"
|
65
|
+
- ".gitignore"
|
66
|
+
- CHANGELOG.md
|
67
|
+
- Dockerfile
|
68
|
+
- Gemfile
|
69
|
+
- Gemfile.lock
|
70
|
+
- LICENSE
|
71
|
+
- README.md
|
72
|
+
- Rakefile
|
73
|
+
- bin/boot.rb
|
74
|
+
- bin/issola.rb
|
75
|
+
- docker-compose.yml
|
76
|
+
- docker-entrypoint.sh
|
77
|
+
- lib/issola.rb
|
78
|
+
- lib/issola/bot.rb
|
79
|
+
- lib/issola/command.rb
|
80
|
+
- lib/issola/command/builder.rb
|
81
|
+
- lib/issola/command/command.rb
|
82
|
+
- lib/issola/command/handler.rb
|
83
|
+
- lib/issola/command/processor.rb
|
84
|
+
- lib/issola/config.rb
|
85
|
+
homepage: https://github.com/Dragaera/issola
|
86
|
+
licenses:
|
87
|
+
- Apache-2.0
|
88
|
+
metadata: {}
|
89
|
+
post_install_message:
|
90
|
+
rdoc_options: []
|
91
|
+
require_paths:
|
92
|
+
- lib
|
93
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
94
|
+
requirements:
|
95
|
+
- - ">="
|
96
|
+
- !ruby/object:Gem::Version
|
97
|
+
version: '0'
|
98
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
99
|
+
requirements:
|
100
|
+
- - ">="
|
101
|
+
- !ruby/object:Gem::Version
|
102
|
+
version: '0'
|
103
|
+
requirements: []
|
104
|
+
rubyforge_project:
|
105
|
+
rubygems_version: 2.7.3
|
106
|
+
signing_key:
|
107
|
+
specification_version: 4
|
108
|
+
summary: Discord bot framework, built on top of `discordrb`
|
109
|
+
test_files: []
|