WoWWiki

This wiki contains inaccurate and out-of-date information. Please head over to https://wowpedia.fandom.com for more accurate and up-to-date game information.

READ MORE

WoWWiki
WoWWiki
Advertisement

This is an example template for a setup for an addon that uses Dongle. It shows how to use the various API's that dongle offers such as the slash commands and the database.

-- This instantiates the Dongle object. From here you will be able to  access
-- the Dongle API.
local addon = DongleStub('Dongle-1.1'):New('DongleAddonTemplate')

-- This is the table containing the default entries for the database. if
-- something cant be found in the database, this will automatically be
-- checked. This will not get saved in the database table.
local databasedefaults = {
	profile = {
		message = 'This is the default message!'
	}
}

--- PrintAbout: Print some text explaining the purpose of this addon.
-- This is for the slash command handler 'about'.
function addon:PrintAbout ()
	self:Print([[This addon is for developers to act as a template for
a setup for an addon that uses dongle. It shows how to use the various API's
that dongle offers such as the slash commands and the database.]])
end

--- PrintMessage: Print the message that is in the database.
-- This is for the slash command handler 'print-message'. It prints the
-- default message that is in the database or your own if you have saved your
-- own with the 'change-message' slash command.
function addon:PrintMessage ()
	-- Get the message from the database.
	local message = self.db.profile.message

	-- Check if the message exists and print it, if not; do nothing.
	if message then
		self:Print(message)
	end
end

--- ChangeMessage: Change the default message that the slash command
-- 'print-message' uses to something else.
-- @param message The message to change the default message to.
function addon:ChangeMessage (message)
	-- Check if there is a message, if not; do nothing.
	if message then
		self.db.profile.message = message
	end
end

--- Initialize: Initialize the addon. 
-- This will be executed at ADDON_LOADED after all the files of the addon have
-- been loaded.
-- Things like initializing the slash commands and database api as well as
-- other things your addon needs defined go here.
function addon:Initialize ()
	-- Initialize the database with the local defaults table.
	self.db = self:InitializeDB('DongleAddonTemplateDB', databasedefaults)

	-- Initialize the slash command.
	self.slashcmd = self:InitializeSlashCommand('DongleAddonTemplate Slash Command',
	'DONGLEADDONTEMPLATE', 'dat', 'dongleaddontemplate')
end

--- Enable: Enable the addon. 
-- This will be executed at PLAYER_LOGIN, after all addons have initialized.
-- The rest of the things that need to happen go in here, such as positioning
-- frames, enabling hooks and registering for events.
function addon:Enable ()
	-- Add a slash command handler called about that matches the lua pattern
	-- '^about$' to the function 'PrintAbout'.
	self.slashcmd:RegisterSlashHandler(
	'about: Print some text explaining the purpose of this addon.', '^about$',
	'PrintAbout')

	-- Add another slash command for printing a message. The pattern
	-- '^print-message (.+)$' will pass anything after 'print-message' to the
	-- handler function. The handler function fetches this in an argument.
	self.slashcmd:RegisterSlashHandler(
	'print-message: Print the message from the database', '^print-message (.+)$',
	'PrintMessage')
end

-- Disable: Disable the addon. 
-- This will be executed at PLAYER_LOGOUT.
-- Here you can unhook, unregister your events and clean up/reset things you
-- have changed.
function addon:Disable ()
end
Advertisement