-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathtemplate_MOD.js
156 lines (137 loc) · 5.12 KB
/
template_MOD.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
module.exports = {
// ---------------------------------------------------------------------
// Action Name
//
// This is the name of the action displayed in the editor.
// ---------------------------------------------------------------------
name: 'The action name in the search window.',
// ---------------------------------------------------------------------
// Action Section
//
// This is the section the action will fall into.
// ---------------------------------------------------------------------
section: 'The category the action is under.',
// ---------------------------------------------------------------------
// Action Subtitle
//
// This function generates the subtitle displayed next to the name.
// ---------------------------------------------------------------------
subtitle: function (data) {
// Each item corresponds to each switch statement.
const info = ['Item 1', 'Item 2', 'Item 3']
// What user sees when previewing actions box on bottom.
return `What I'm doing: ${info[data.info]}`
},
// ---------------------------------------------------------------------
// Action Storage Function
//
// Stores the relevant variable info for the editor.
// ---------------------------------------------------------------------
variableStorage: function (data, varType) {
const type = parseInt(data.storage)
if (type !== varType) return
const dataType = 'Number'
return ([data.varName, dataType])
},
// ---------------------------------------------------------------------
// Action Fields
//
// These are the fields for the action. These fields are customized
// by creating elements with corresponding IDs in the HTML. These
// are also the names of the fields stored in the action's JSON data.
// ---------------------------------------------------------------------
fields: ['FirstTextBox', 'info', 'storage', 'varName'],
// ---------------------------------------------------------------------
// Command HTML
//
// This function returns a string containing the HTML used for
// editting actions.
//
// The "isEvent" parameter will be true if this action is being used
// for an event. Due to their nature, events lack certain information,
// so edit the HTML to reflect this.
//
// The "data" parameter stores constants for select elements to use.
// Each is an array: index 0 for commands, index 1 for events.
// The names are: sendTargets, members, roles, channels,
// messages, servers, variables
// ---------------------------------------------------------------------
html: function (isEvent, data) {
return `
<div style="width: 90%;">
Variable or String:<br>
<input id="VariableTextBox" class="round" type="text">
</div><br>
<div style="padding-top: 8px; width: 60%;">
Options:
<select id="info" class="round">
<option value="0" selected>Option 1</option>
<option value="1">Option 2</option>
<option value="2">Option 3</option>
<option value="3">Option 4</option>
</select>
</div><br>
<div style="padding-top: 8px;">
<div style="float: left; width: 35%;">
Store In:<br>
<select id="storage" class="round">
${data.variables[1]}
</select>
</div>
<div id="varNameContainer" style="float: right; width: 60%;">
Variable Name:<br>
<input id="varName" class="round" type="text">
</div>
</div>`
},
// ---------------------------------------------------------------------
// Action Editor Init Code
//
// When the HTML is first applied to the action editor, this code
// is also run. This helps add modifications or setup reactionary
// functions for the DOM elements.
// ---------------------------------------------------------------------
init: function () {},
// ---------------------------------------------------------------------
// Action Bot Function
//
// This is the function for the action within the Bot's Action class.
// Keep in mind event calls won't have access to the "msg" parameter,
// so be sure to provide checks for variable existance.
// ---------------------------------------------------------------------
action: function (cache) {
const data = cache.actions[cache.index]
const storage = parseInt(data.storage)
const varName = this.evalMessage(data.varName, cache)
const info = parseInt(data.info)
let result = 5
switch (info) {
case 0:
result = 0
break
case 1:
result = 1
break
case 2:
result = 2
break
case 3:
result = 3
break
case 4:
result = 4
break
}
this.storeValue(result, storage, varName, cache)
this.callNextAction(cache)
},
// ---------------------------------------------------------------------
// Action Bot Mod
//
// Upon initialization of the bot, this code is run. Using the bot's
// DBM namespace, one can add/modify existing functions if necessary.
// In order to reduce conflictions between mods, be sure to alias
// functions you wish to overwrite.
// ---------------------------------------------------------------------
mod: function (DBM) {}
}