Significant progress on command parsing
This commit is contained in:
parent
44caa4054d
commit
61850651d9
|
@ -2,13 +2,35 @@
|
||||||
# By Matthieu Grieger
|
# By Matthieu Grieger
|
||||||
# config.rb
|
# config.rb
|
||||||
|
|
||||||
|
|
||||||
|
# ------------------------
|
||||||
|
# CONNECTION CONFIGURATION
|
||||||
|
# ------------------------
|
||||||
|
|
||||||
|
# Bot username
|
||||||
|
# DEFAULT VALUE: "MumbleDJ"
|
||||||
|
BOT_USERNAME = "MumbleDJTest"
|
||||||
|
|
||||||
|
# Password to join Mumble server
|
||||||
|
# DEFAULT VALUE: "" (leave it as this value if no password is required)
|
||||||
|
MUMBLE_PASSWORD = ""
|
||||||
|
|
||||||
|
# Server address
|
||||||
|
# DEFAULT VALUE: "localhost"
|
||||||
|
MUMBLE_SERVER_ADDRESS = "matthieugrieger.com"
|
||||||
|
|
||||||
|
# Server port number
|
||||||
|
# DEFAULT VALUE: 64738
|
||||||
|
MUMBLE_SERVER_PORT = 64738
|
||||||
|
|
||||||
|
|
||||||
# ---------------------
|
# ---------------------
|
||||||
# GENERAL CONFIGURATION
|
# GENERAL CONFIGURATION
|
||||||
# ---------------------
|
# ---------------------
|
||||||
|
|
||||||
# Default channel
|
# Default channel
|
||||||
# DEFAULT VALUE: "Music"
|
# DEFAULT VALUE: "Music"
|
||||||
DEFAULT_CHANNEL = "Music"
|
DEFAULT_CHANNEL = "Bot Testing"
|
||||||
|
|
||||||
# Command prefix
|
# Command prefix
|
||||||
# DEFAULT VALUE: "!"
|
# DEFAULT VALUE: "!"
|
||||||
|
|
|
@ -15,10 +15,9 @@ class MumbleDJ
|
||||||
# default_channel: The channel you would like the bot to connect to by
|
# default_channel: The channel you would like the bot to connect to by
|
||||||
# default. If the channel does not exist, the bot will connect to
|
# default. If the channel does not exist, the bot will connect to
|
||||||
# the root channel of the server instead.
|
# the root channel of the server instead.
|
||||||
def initialize(username, server_address, server_port=64738, default_channel="", password="")
|
def initialize(username, server_address, server_port, default_channel, password)
|
||||||
@username = username
|
@username = username
|
||||||
@password = password
|
@password = password
|
||||||
@cert = cert
|
|
||||||
@server_address = server_address
|
@server_address = server_address
|
||||||
@server_port = server_port
|
@server_port = server_port
|
||||||
@default_channel = default_channel
|
@default_channel = default_channel
|
||||||
|
@ -53,14 +52,66 @@ class MumbleDJ
|
||||||
# Sets various callbacks that can be triggered during the connection.
|
# Sets various callbacks that can be triggered during the connection.
|
||||||
def set_callbacks
|
def set_callbacks
|
||||||
@client.on_text_message do |message|
|
@client.on_text_message do |message|
|
||||||
self.parse_message(message)
|
parse_message(message)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
# Parses messages looking for commands, and calls the appropriate
|
# Parses messages looking for commands, and calls the appropriate
|
||||||
# methods to complete each requested command.
|
# methods to complete each requested command.
|
||||||
def parse_message(message)
|
def parse_message(message)
|
||||||
|
@sender = @client.users[message.actor].name
|
||||||
|
if message.message[0] == COMMAND_PREFIX
|
||||||
|
if message.message.count(" ") != 0
|
||||||
|
@command = message.message[1..(message.message.index(" ") - 1)]
|
||||||
|
@argument = message.message[(message.message.index(" ") + 1)..-1]
|
||||||
|
else
|
||||||
|
@command = message.message[1..-1]
|
||||||
|
end
|
||||||
|
|
||||||
|
case @command
|
||||||
|
when ADD_ALIAS
|
||||||
|
if has_permission?(ADMIN_ADD, @sender)
|
||||||
|
if OUTPUT_ENABLED
|
||||||
|
puts("#{@sender} has added a song to the queue.")
|
||||||
|
end
|
||||||
|
if song_add_successful?(@argument, @sender)
|
||||||
|
@client.text_channel("#(@sender} has added a song to the queue.")
|
||||||
|
else
|
||||||
|
@client.text_user(@sender, "The URL you provided was not valid.")
|
||||||
|
end
|
||||||
|
end
|
||||||
|
when SKIP_ALIAS
|
||||||
|
puts("Skip command request.")
|
||||||
|
when VOLUME_ALIAS
|
||||||
|
puts("Volume command request.")
|
||||||
|
when MOVE_ALIAS
|
||||||
|
if has_permission?(ADMIN_MOVE, @sender)
|
||||||
|
begin
|
||||||
|
@client.join_channel(@argument)
|
||||||
|
rescue Mumble::ChannelNotFound
|
||||||
|
@client.text_user(@sender, "The channel you provided does not exist.")
|
||||||
|
end
|
||||||
|
end
|
||||||
|
when KILL_ALIAS
|
||||||
|
puts("Kill command request.")
|
||||||
|
else
|
||||||
|
puts("The command you have entered is not valid.")
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
# Checks message sender against ADMINS array to verify if they have
|
||||||
|
# permission to use a specific command.
|
||||||
|
def has_permission?(admin_command, sender)
|
||||||
|
if ENABLE_ADMINS and admin_command
|
||||||
|
return ADMINS.include?(sender)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
# Attempts to add the requested song to the queue, returns true if the
|
||||||
|
# song was successfully queued, false otherwise.
|
||||||
|
def song_add_successful?(song_url, sender)
|
||||||
|
|
||||||
end
|
end
|
||||||
|
|
||||||
# Safely disconnects the bot from the server.
|
# Safely disconnects the bot from the server.
|
||||||
|
|
|
@ -3,9 +3,11 @@
|
||||||
# run_bot.rb
|
# run_bot.rb
|
||||||
|
|
||||||
require_relative "mumbledj"
|
require_relative "mumbledj"
|
||||||
|
require_relative "config"
|
||||||
require 'thread'
|
require 'thread'
|
||||||
|
|
||||||
bot = MumbleDJ.new(username="MumbleDJ", server_address="localhost")
|
bot = MumbleDJ.new(username=BOT_USERNAME, server_address=MUMBLE_SERVER_ADDRESS, port=MUMBLE_SERVER_PORT,
|
||||||
|
default_channel=DEFAULT_CHANNEL, password=MUMBLE_PASSWORD)
|
||||||
bot.connect
|
bot.connect
|
||||||
|
|
||||||
begin
|
begin
|
||||||
|
|
Reference in a new issue