&mem update
Probably the one command you want all new members to run
Getting started is quite easy, just follow the steps below:
&bot update logchannel #bot-log
&bot update member role @YourMemberRoleHere
&bot update officer role @YourOfficerRoleHere
This will make sure that the bot can log the things it does by itself, that the default permissions are in place, and that members are properly tagged as active/passive in the database.
Note that only the Member role is used to set members active and passive in the database based on who has that role, while the officer role allows people to use the officer restricted commands.
Members can then register themselves with &mem update
, you can create nodewars with &nw new nodewarDate
, which they can then attend by pressing the + reaction.
Most other things should be explained in here or with the command &help
, for anything else, join us on Discord and ask!
&mem update
&nw new nodewarDate
&nw announce nodewarId
command to just ping those still undecided.&nw update result nodewarId won
, and probably just delete the message.&nw attendance nodewarId
and realize that some came that didn't sign up and some signed up but didn't come, so you change their attendance with &nw can nodewarId memberId
and &nw noshow nodewarId memberId
&mem list node dateFrom dateTo
and get a list of everyone's attendance for that period.&graph nw nodes
or &graph nw att
because you are just a little curious about what nodes you go for the most or how your attendances have been over time.Or said another way &mem update
, probably the most used command in the whole bot, the main idea is to let you and your members register their in game gear info, which can then be used for party sorting, tracking progress and getting a good look at your members.
Unless you manually delete a member they are kept active/passive in the database depending on them having the Discord member role you registered with &bot update member role @yourMemberRole
. If needed you can also use &mem activate memberId
and &mem kick memberId
to set the active flag in the database manually. Do note that this will be changed again if they lose/get the member role again.
Not everyone can play all the time, with this you can set your members as away for certain periods, the bot will exclude them from nodewars in that period and notify you when they should be back.
Originally requested by a guild that wanted to do retrials of their members, it will let you keep track of trial days and notify officer and the member on the day of the trial.
Most people like stats, some more then others, and this should let them compare pretty much everything about the members to their hearts content. Try &mem list top
.
Some guilds like to distribute their elixirs amongs party members, by registering elixirs with the bot it can distribute them for you, the distribution can be seen on the "Elixir" tab of the nodewar message. Do &mem consumables
for a complete list of the elixirs you can register with the bot.
&mem update
Probably the one command you want all new members to run
It will by default ask them for their family name, character name, class, level, AP, AAP, and DP. This can be further customized with the &com mem update add
command.
&mem update statType val?
Used to update individual member values.
See statType description below for options, some are a bit trickier then others though, like:
&mem update elixir conc,life,fury
Use &mem consumables
for a full list of usable elixirs.Also, party related options will be ignored by this command, see &mem update other
for that.
statType: Valid values = fam, family, familyname, char, character, charactername, class, classes, level, lvl, ap, aap, awakened, awakenedap, awakening, awakeningap, awap, dp, accuracy, acc, eva, evasion, dr, damagereduction, axe, partyname, party, partylead, partyleader, name, names, consumable, elixir, elixirs, pa, paparty, birth, born, birthday, birthdate, country, horse, trial, trialdate, hiddenap, hiddenaap, hiddendp, hiddenaccuracy, hiddenacc, hiddenevasion, hiddeneva, hiddendamagereduction, hiddendr, verification, verify, proof, prove, set, horseset, hp, health, succ, succession
val?: Optional. Text/Any. Multiple words must be encased in quotes ""
&mem update familyName charName charClass charLevel charAp charAap charDp acc? eva? dr?
Just lets you update most values in one go.
familyName: Text/Any. Multiple words must be encased in quotes ""
charName: Text/Any. Multiple words must be encased in quotes ""
charClass: Text/Any. Multiple words must be encased in quotes ""
charLevel: Number.
charAp: Number.
charAap: Number.
charDp: Number.
acc?: Optional. Number.
eva?: Optional. Number.
dr?: Optional. Number.
&mem update other member statType val
The officer version of &mem update
, just add a memberId as the first parameter to update a members individual values.
In addition to the other type of values this can be used to update party, partylead, and paparty.
member: Valid values = InternalId, member name, or @mentionMember
statType: Valid values = fam, family, familyname, char, character, charactername, class, classes, level, lvl, ap, aap, awakened, awakenedap, awakening, awakeningap, awap, dp, accuracy, acc, eva, evasion, dr, damagereduction, axe, partyname, party, partylead, partyleader, name, names, consumable, elixir, elixirs, pa, paparty, birth, born, birthday, birthdate, country, horse, trial, trialdate, hiddenap, hiddenaap, hiddendp, hiddenaccuracy, hiddenacc, hiddenevasion, hiddeneva, hiddendamagereduction, hiddendr, verification, verify, proof, prove, set, horseset, hp, health, succ, succession
val: Text/Any. Multiple words must be encased in quotes ""
&mem update other member familyName charName charClass charLevel charAp charAap charDp acc? eva? dr?
Just lets you update most values in one go for other members.
member: Valid values = InternalId, member name, or @mentionMember
familyName: Text/Any. Multiple words must be encased in quotes ""
charName: Text/Any. Multiple words must be encased in quotes ""
charClass: Text/Any. Multiple words must be encased in quotes ""
charLevel: Number.
charAp: Number.
charAap: Number.
charDp: Number.
acc?: Optional. Number.
eva?: Optional. Number.
dr?: Optional. Number.
&mem update hidden hiddenStatType number?
Used to update individual hidden values, those not displayed with your regular stats.
hiddenStatType: Valid values = ap, aap, awakened, awakenedap, awakening, awakeningap, awap, dp, accuracy, acc, eva, evasion, dr, damagereduction
number?: Optional. Number.
&mem update other hidden member hiddenStatType number
The officer version of &mem update hidden
, works the same way, you just add the memberId as the first parameter and it wont ask for the value if it is missing.
member: Valid values = InternalId, member name, or @mentionMember
hiddenStatType: Valid values = ap, aap, awakened, awakenedap, awakening, awakeningap, awap, dp, accuracy, acc, eva, evasion, dr, damagereduction
number: Number.
&mem update custom questionId answer?
Update a specific custom &mem update
question
Optionally supply your answer directly with the second parameter, if only qustionId is set the question will be asked interactivly
questionId: Number.
answer?: Optional. Text/Any. Multiple words must be encased in quotes ""
&mem set image url
Patreon tier 4 reward.
Normally your discord image is displayed in your &mem info
, this lets you change it.
url: Text/Any. Multiple words must be encased in quotes ""
&mem set url url
Patreon tier 5 reward.
Normally your url is directed at canute.gg, this lets you change it.
url: Text/Any. Multiple words must be encased in quotes ""
&mem proof url?
, &mem prove url?
, &mem verify url?
, &mem verification url?
Used to attach an image to a members info, can be used to verify gear or whatever. Do &mem proof none
to remove it again.
If you copy-paste an image to discord to upload it with this command, it will use the URL from Discords CDN. Note that if the image is removed from the channel this will stop working.
url?: Optional. Text/Any. Multiple words must be encased in quotes ""
&mem kick member
Kick someone from the bot and tag them as passive in the database
Bot keeps track of who is still an active member or not with the member role, but if you want to tag someone as passive in the database you can do so with this command.
member: Valid values = InternalId, member name, or @mentionMember
&mem activate passiveMember
Tag someone as active in the database
Opposite of the &mem kick
command, it will activate someone in the database again.
passiveMember: Valid values = InternalId or @mentionMember
&mem delete member
Completely remove a member from the database
Will remove all attendance data, all gear progress logs and member info. Like they never existed at all! This command requires that you confirm before it actually does anything.
member: Valid values = InternalId or @mentionMember
&mem away
Will ask you for a from and to date, and tag you as away for that period.
Nodewars created in the period you are tagged as away will automatically register you as away too.
&mem away fromDate toDate?
Register yourself as away.
fromDate: Date format defaults to dd.MM.yyyy, but can be configured
toDate?: Optional. Date format defaults to dd.MM.yyyy, but can be configured
&mem away amount dateModifier
Register yourself as away, with just an amount of days or weeks etc.
Used like &mem away 14 days
will register you as away from today's date to 14 days in the future.
amount: Number.
dateModifier: Valid values = day, days, week, weeks, month, months, year, years
&mem away member amount dateModifier
Register someone else as away with amount amount/modifier
member: Valid values = InternalId, member name, or @mentionMember
amount: Number.
dateModifier: Valid values = day, days, week, weeks, month, months, year, years
&mem away member fromDate toDate
Register someone else as away with set from/to date
member: Valid values = InternalId, member name, or @mentionMember
fromDate: Date format defaults to dd.MM.yyyy, but can be configured
toDate: Date format defaults to dd.MM.yyyy, but can be configured
&mem away reason member reason
Register an away reason shown while a member is away
Use " " Around the reason, like &mem away reason memberId "Holiday trip for 2 weeks"
. Can be removed again by doing &mem away reason memberId none
member: Valid values = InternalId, member name, or @mentionMember
reason: Text/Any. Multiple words must be encased in quotes ""
&mem back
Tag yourself as back from being away
&mem back member
Register someone else as back from being away.
member: Valid values = InternalId, member name, or @mentionMember
&mem trial member amount dateModifier
Register trial date for member
member: Valid values = InternalId, member name, or @mentionMember
amount: Number.
dateModifier: Valid values = day, days, week, weeks, month, months, year, years
&mem trial member trialDate
Register trial date for member by settings the date directly
member: Valid values = InternalId, member name, or @mentionMember
trialDate: Text/Any. Multiple words must be encased in quotes "" Can be removed by setting it to 'none'.
&mem list statType? alternative?
Get sorted stats
top and class can be further filtered on class, party can be filtered on the different party names, and attendance can be filtered on member, as in the memberId, name or @memberMention
statType?: Optional. Valid values = fam, family, familyname, class, classes, level, lvl, ap, aap, awakened, awakenedap, awakening, awakeningap, awap, dp, accuracy, acc, eva, evasion, dr, damagereduction, gs, gearscore, axe, partyname, party, away, gone, top, name, names, attendance, consumable, elixir, elixirs, pa, paparty, birth, born, birthday, birthdate, country, horse, trial, trialdate, memberid, id, applications, hp, health, succ, succession, proof, prove, verify, verification
alternative?: Optional. Text/Any. Multiple words must be encased in quotes ""
&mem list passive statType? alternative?
Get sorted stats on passive members
Works the same way as the regular list command but will only get passive members form the database
statType?: Optional. Valid values = fam, family, familyname, class, classes, level, lvl, ap, aap, awakened, awakenedap, awakening, awakeningap, awap, dp, accuracy, acc, eva, evasion, dr, damagereduction, gs, gearscore, axe, partyname, party, away, gone, top, name, names, attendance, consumable, elixir, elixirs, pa, paparty, birth, born, birthday, birthdate, country, horse, trial, trialdate, memberid, id, applications, hp, health, succ, succession, proof, prove, verify, verification
alternative?: Optional. Text/Any. Multiple words must be encased in quotes ""
&mem list node dateFrom? dateTo? eventType?
Gets attendance count for nodewars in period
dateFrom?: Optional. Date format defaults to dd.MM.yyyy, but can be configured
dateTo?: Optional. Date format defaults to dd.MM.yyyy, but can be configured
eventType?: Optional. Valid values = nw, nodewar, siege, wagon, tribute, boss, guildboss, training, fun
&mem list where customCriteria statType? alternative?
Gets list of members filtered on custom criteria, like "Ap > 300 && dp > 300 && CharacterLevel < 62"
customCriteria must be enclosed by double quotes. And the property names you check against are case sensitive, for now you can only check against int values, these are CharacterLevel, Ap, Aap, Dp, Gearscore, Accuracy, Evasion, DamageReduction, PaParty, AxeLevel, Hp, DaysActive, HiddenAp, HiddenAap, HiddenDp, HiddenAccuracy, HiddenEvasion, HiddenDamageReduction. Comparisons you can do are Equals as ==, NotEquals as !=, Above as >, Below as <, AboveOrEqual as >=, BelowOrEqual as <=. These can be combined with And as &&, and/or Or as ||.
customCriteria: Text/Any. Multiple words must be encased in quotes ""
statType?: Optional. Valid values = fam, family, familyname, class, classes, level, lvl, ap, aap, awakened, awakenedap, awakening, awakeningap, awap, dp, accuracy, acc, eva, evasion, dr, damagereduction, gs, gearscore, axe, partyname, party, away, gone, top, name, names, attendance, consumable, elixir, elixirs, pa, paparty, birth, born, birthday, birthdate, country, horse, trial, trialdate, memberid, id, applications, hp, health, succ, succession, proof, prove, verify, verification
alternative?: Optional. Text/Any. Multiple words must be encased in quotes ""
&mem info member?
Get member info
Returns the member info displayed whenever someone does &mem update
member?: Optional. Valid values = InternalId, member name, or @mentionMember
&mem application discordMention
View application answers
Since applications are supposed to work for non members as well the discordMention parameter must either be an @mention, or just the discord name of the person, not the internal memberId since they may not be a member while applying.
discordMention: Text/Any. Multiple words must be encased in quotes ""
&mem avg
Get guild averages
&mem find name
Find member by their character, family or discord name
name: Text/Any. Multiple words must be encased in quotes ""
&mem consumables
List available elixirs
&mem elixirs partyName? nodewarId?
View elixirs for party, or party in a nodewar.
partyName?: Optional. Text/Any. Multiple words must be encased in quotes ""
nodewarId?: Optional. Number. The id of the nodewar, you can find it in the top left of the nodewar message or by doing &nw list
&mem add elixir elixir
Add specific elixir
You can either use the id or short/long name of the elixir displayed in &mem consumables
elixir: Text/Any. Multiple words must be encased in quotes ""
&mem remove elixir elixir
Remove specific elixir
You can either use the id or short/long name of the elixir displayed in &mem consumables
elixir: Text/Any. Multiple words must be encased in quotes ""
&mem remove all elixirs
Removes all elixirs
&mem flush cache
Flush member cache
If you for some reason think the data returned from the bot is wrong, you can try flushing your member cache and get fresh data from the database.
&mem apply
Can be customized by you to ask anyone questions.
Must be configured with the &com mem apply add
command.
You can view who has responded with &mem list applications
and view answers with &mem application @discordName
&mem remove application discordMention
Remove a persons application registered with &mem apply
discordMention: Text/Any. Multiple words must be encased in quotes ""
&mem list application ids
In the cases where you want to remove applications for people who have left the server you can use this to display their id and then use that with the remove application command
&mem list custom answers member?
If you want to remove answers to custom mem update questions you can find their ids with this
member?: Optional. Valid values = InternalId, member name, or @mentionMember
&mem remove other custom answer member answerId
Remove a custom mem update answer by its Id
member: Valid values = InternalId, member name, or @mentionMember
answerId: Number.
&mem remove all other custom answers member
Remove a members custom mem update answers
member: Valid values = InternalId, member name, or @mentionMember
&mem remove custom answer answerId
Remove a custom mem update answer you have registered by its Id
answerId: Number.
&mem remove all custom answers
Remove all custom mem update answers you yourself have registered
&mem dm message dmFilter dmFilterValue?
Send a Discord DM to your members
The party option only sends to those manually added to that party, not those placed in it for a particular nodewar.
message: Text/Any. Multiple words must be encased in quotes ""
dmFilter: Text/Any. Multiple words must be encased in quotes "" Valid values = all, party and class
dmFilterValue?: Optional. Text/Any. Multiple words must be encased in quotes "" Valid values depends on dmFilter, if party it expects one of your parties, if class it expects one of warrior, war, ranger, berserker, serker, zerker, sorceress, sorc, valkyrie, valk, wizard, wiz, witch, tamer, loli, musa, maehwa, ninja, kunoichi, kuno, darkknight, dark knight, dk, striker, mystic, lahn, archer, shai, guardian, hashashin, hash, nova, sage, corsair, cors, drakania, drak, witchzard.
&mem diff role
@Mention those with the member role but not in the database, and those in the database without the member role.
&mem announce member excludeOrInclude
Exclude/include a member from the nodewar announcement
member: Valid values = InternalId, member name, or @mentionMember
excludeOrInclude: Text/Any. Multiple words must be encased in quotes ""
&mem delete me
Delete all your data on all servers
Create a "nodewar message", which will let your members indicate if they can attend or not simply by clicking on the pluss or minus reaction.
In addition to having your members sign on/off for a nodewar, you can also tag them as no show etc after the fact
Nodewars can be manually or automatically announced with the &nw announce nodewarId
command, which will ping those still undecided. Or you can DM members with different attendance statuses with &nw dm nodewarId undecided "Message about them not having signed up yet here!"
Nodewars can be "closed" for multiple reasons, either by the time being after the nodewar start, by you defining a max attendance count, or just manually closing it. Members signing up while the nodewar is closed will be placed on a waiting list, and if someone else signs off they will be automatically moved to Can, based on who has been waiting the longest. You can still change their attendance manually with the &nw can/cant/noshow/undecided/away nodewarId memberId
command.
Even though someone says they will attend doesn't really mean they actually will. Therefor you can register a unique password for each nodewar, open a period where the password is accepted and tell those who attended the password, then they can validate their attendance by registering it themselves.
By ending a nodewar after it is done with the &nw update result won/lost/draw
you also register the nodewars stats in the database, like how many attended out of the total members you had at the time, and their average gearscore.
Unfortunately because of how Discord works, attendance and the "nodewar message" can only be updated so often, you can find the current rate limits at the bottom of the "nodewar message".
&nw new
Create a new nodewar by having the bot ask you questions.
Will ask for a date by default. Questions can be further customized with the &com nw new add
command.
&nw new date nodewarMessage? nodeId?
Create a new nodewar
date: Date format defaults to dd.MM.yyyy, but can be configured
nodewarMessage?: Optional. Text/Any. Multiple words must be encased in quotes "" Displayed in the nodewar message itself, but is disabled by default, have a look at &bot settings to enable it.
nodeId?: Optional. Number. The nodeId uses the same id as http://www.somethinglovely.net/bdo/, just find the node there and select it, then copy the id from the end of the URL.
&nw new today
Create a new nodewar today
&nw new tomorrow
Create a new nodewar tomorrow
&nw new dayofWeek
Create a new nodewar on the week of day specified
dayofWeek: Valid values = sunday, sun, monday, mon, tuesday, tue, wedensday, wed, thursday, thu, friday, fri, saturday, sat
&nw new date eventType
Create a new nodewar with a custom event type, see the &ev type
commands for how to set them up.
date: Date format defaults to dd.MM.yyyy, but can be configured
eventType: Valid values = eventTypeId or name of the event type
&nw delete nodewar
Delete a nodewar
Will also remove attendance associated with the nodewar
nodewar: Valid values = nodewarId, found by doing &nw list and looking at the Id column, or in the top right of the nodewar message.
&nw list mandatory?
List nodewars
Mandatory true/false will filter the list on those nodewars registered with that value.
mandatory?: Optional. Boolean, true/false.
&nw list nodes
List what nodes you've had nodewars on
Tells you how many times you've gone for a specific node and the last time that was.
&nw reset nodewar
Reset the nodewar message
Will remove the message only, and it's reaction, then add it all back. Useful if something is wrong or you just want to move it.
nodewar: Valid values = nodewarId, found by doing &nw list and looking at the Id column, or in the top right of the nodewar message.
&nw dm nodewar attendanceStatusString message
Send a DM message to members associated with a nodewar
nodewar: Valid values = nodewarId, found by doing &nw list and looking at the Id column, or in the top right of the nodewar message.
attendanceStatusString: Text/Any. Multiple words must be encased in quotes "" Valid values = undecided, away, can, cant, noshow and all
message: Text/Any. Multiple words must be encased in quotes ""
&nw announce nodewar message?
Ping undecided members of a nodewar
Can optionally have a message associated with it. It will be removed on the next announce.
nodewar: Valid values = nodewarId, found by doing &nw list and looking at the Id column, or in the top right of the nodewar message.
message?: Optional. Text/Any. Multiple words must be encased in quotes ""
&nw update date nodewar date
Updated a nodewars date
nodewar: Valid values = nodewarId, found by doing &nw list and looking at the Id column, or in the top right of the nodewar message.
date: Date format defaults to dd.MM.yyyy, but can be configured
&nw update mandatory nodewar mandatory
Set if a nodewar is mandatory or not
Is by default not set, but can be set to true or false, will display so in the nodewar message and can be used as filter other places.
nodewar: Valid values = nodewarId, found by doing &nw list and looking at the Id column, or in the top right of the nodewar message.
mandatory: Boolean, true/false.
&nw update message nodewar nodewarMessage
Update the message displayed in the nodewar message
nodewar: Valid values = nodewarId, found by doing &nw list and looking at the Id column, or in the top right of the nodewar message.
nodewarMessage: Text/Any. Multiple words must be encased in quotes "" Displayed in the nodewar message itself, but is disabled by default, have a look at &bot settings to enable it.
&nw update node nodewar nodeId
Set the node for the nodewar
nodewar: Valid values = nodewarId, found by doing &nw list and looking at the Id column, or in the top right of the nodewar message.
nodeId: Number. The nodeId uses the same id as http://www.somethinglovely.net/bdo/, just find the node there and select it, then copy the id from the end of the URL.
&nw remove node nodewar
Removes the node for a nodewar
nodewar: Valid values = nodewarId, found by doing &nw list and looking at the Id column, or in the top right of the nodewar message.
&nw update result nodewar resultType
Set the nodewar result, and store it for later statistics.
nodewar: Valid values = nodewarId, found by doing &nw list and looking at the Id column, or in the top right of the nodewar message.
resultType: Valid values = won, win, victory, lost, loss, draw
&nw update type nodewar eventType
Update nodewar type
Not all nodewars are nodewars ^^
nodewar: Valid values = nodewarId, found by doing &nw list and looking at the Id column, or in the top right of the nodewar message.
eventType: Valid values = nw, nodewar, siege, wagon, tribute, boss, guildboss, training, fun
&nw update custom type nodewar eventType
Update nodewar type with a custom event type
Not all nodewars are nodewars, and these are even less so.
nodewar: Valid values = nodewarId, found by doing &nw list and looking at the Id column, or in the top right of the nodewar message.
eventType: Valid values = eventTypeId or name of the event type
&nw update password nodewar nodewarPassword
Register a validation password for the nodewar
The Idea is that you can register a password for a nodewar, then later make it public and have your members validate their attendance by also registering it. Closing the nodewar with &nw update result won/lost/draw
will display a list of who validated their attendance.
nodewar: Valid values = nodewarId, found by doing &nw list and looking at the Id column, or in the top right of the nodewar message.
nodewarPassword: Text/Any. Multiple words must be encased in quotes ""
&nw update limit nodewar limit
Set an upper attendance limit for the nodewar
Those signing up after the nodewar has reached it's limit will be placed on the waiting list.
nodewar: Valid values = nodewarId, found by doing &nw list and looking at the Id column, or in the top right of the nodewar message.
limit: Number.
&nw update announce channel nodewar channelId
Set it up so that upcoming auto announcements for this nodewar is done in another channel
nodewar: Valid values = nodewarId, found by doing &nw list and looking at the Id column, or in the top right of the nodewar message.
channelId: Text/Any. Multiple words must be encased in quotes ""
&nw password public nodewar isPublic delayMinutes?
Open the attendance validation registration period
nodewar: Valid values = nodewarId, found by doing &nw list and looking at the Id column, or in the top right of the nodewar message.
isPublic: Boolean, true/false.
delayMinutes?: Optional. Number.
&nw password nodewar yourPassword
Register your attendance validation password
The individual counter part to the &nw update password
command. Used to validate your attendance if the nodewar has a password set.
nodewar: Valid values = nodewarId, found by doing &nw list and looking at the Id column, or in the top right of the nodewar message.
yourPassword: Text/Any. Multiple words must be encased in quotes ""
&nw proof nodewar url?
, &nw prove nodewar url?
, &nw verify nodewar url?
, &nw verification nodewar url?
Register an image as proof
Can be used for whatever the guild want's, to verify gear/buffs etc
nodewar: Valid values = nodewarId, found by doing &nw list and looking at the Id column, or in the top right of the nodewar message.
url?: Optional. Text/Any. Multiple words must be encased in quotes ""
&nw set password memberId nodewar
Set validation password for someone else
memberId: Text/Any. Multiple words must be encased in quotes ""
nodewar: Valid values = nodewarId, found by doing &nw list and looking at the Id column, or in the top right of the nodewar message.
&nw set passwords memberIds nodewar
Set the validation password for a comma separated list of members
memberIds: Text/Any. Multiple words must be encased in quotes ""
nodewar: Valid values = nodewarId, found by doing &nw list and looking at the Id column, or in the top right of the nodewar message.
&nw remove password memberId nodewar
Remove someones validation password
memberId: Text/Any. Multiple words must be encased in quotes ""
nodewar: Valid values = nodewarId, found by doing &nw list and looking at the Id column, or in the top right of the nodewar message.
&nw can nodewar memberId
Register someone as can for a nodewar
nodewar: Valid values = nodewarId, found by doing &nw list and looking at the Id column, or in the top right of the nodewar message.
memberId: Text/Any. Multiple words must be encased in quotes ""
&nw cant nodewar memberId
Register someone as cant for a nodewar
nodewar: Valid values = nodewarId, found by doing &nw list and looking at the Id column, or in the top right of the nodewar message.
memberId: Text/Any. Multiple words must be encased in quotes ""
&nw away nodewar memberId
Register someone as away for a nodewar
nodewar: Valid values = nodewarId, found by doing &nw list and looking at the Id column, or in the top right of the nodewar message.
memberId: Text/Any. Multiple words must be encased in quotes ""
&nw undecided nodewar memberId
Register someone as undecided for a nodewar
nodewar: Valid values = nodewarId, found by doing &nw list and looking at the Id column, or in the top right of the nodewar message.
memberId: Text/Any. Multiple words must be encased in quotes ""
&nw noshow nodewar memberId
Register someone as noshow for a nodewar
nodewar: Valid values = nodewarId, found by doing &nw list and looking at the Id column, or in the top right of the nodewar message.
memberId: Text/Any. Multiple words must be encased in quotes ""
&nw waiting nodewar memberId
Register someone as on the waiting list for a nodewar
nodewar: Valid values = nodewarId, found by doing &nw list and looking at the Id column, or in the top right of the nodewar message.
memberId: Text/Any. Multiple words must be encased in quotes ""
&nw attendance nodewar
Get a list of a nodewars attendance
nodewar: Valid values = nodewarId, found by doing &nw list and looking at the Id column, or in the top right of the nodewar message.
&nw close nodewar
Manually close a nodewar
Those signing up after this will be placed on the waiting list.
nodewar: Valid values = nodewarId, found by doing &nw list and looking at the Id column, or in the top right of the nodewar message.
&nw open nodewar
Open a manually closed nodewar
This is the reverse of &nw close nodewar
, it will not open nodewars that are automatically closed for other reasons.
nodewar: Valid values = nodewarId, found by doing &nw list and looking at the Id column, or in the top right of the nodewar message.
&nw here nodewar
@mention those still not on the voice channel.
Gets a diff on those who signed up, and those who are still not in the registered voice channel
nodewar: Valid values = nodewarId, found by doing &nw list and looking at the Id column, or in the top right of the nodewar message.
&nw sync nodewar
Will update the nodewars attendance with new members, those who are away etc.
New members without attendance will be added as undecided. Passive members will be removed. Members registered as away for the nodewars date will be set as away, members registered as away but no longer has a registered away date will be set as undecided.
nodewar: Valid values = nodewarId, found by doing &nw list and looking at the Id column, or in the top right of the nodewar message.
&nw waiting fix nodewar
If the max attendance has been adjusted or too many are attending, this will either move people from waiting to can or from can to waiting depending on their last updated timestamp.
nodewar: Valid values = nodewarId, found by doing &nw list and looking at the Id column, or in the top right of the nodewar message.
&nw flush attendance cache
Empties the attendance cache
In cases where the attendance cache is not up to date, you can manually flush it so it's rebuilt the next time
&nw flush nodewar cache
Empties the nodewar cache
Shouldn't normally need this, but here it is just in case.
The sorting works by taking all your attending members then placing them one by one into a party that fits them, the priority is important since the one with the lowest number will be filled first, and if a member is placed there they will not be concider for another party even it that would fit them better.
Setting &nw update auto partyId false
basically means that only Fill, Overflow and PA groups will be considered for the party, and every member must be manually placed with the &mem update other memberId party partyName
command. Leaving auto sort disabled does not mean you can not manually placed members there though, they will just be placed there first before anyone is automatically sorted into the party.
Setting the count to 0 or more then 1 means the party will get a number after it, members can also be manually placed in these parties, just match the party name with the number.
Some classes can be nice to evenly distribute amongs your parties, but do not that ever rule only applies for that party, and you cant have an even number of a certain class in all parties unless you only have one party type or do it manually. Also note that the code does some rounding when figuring out how many it can place of a class per party, so for certain combinations of "members with class" divided by "parties for party type" it might seem a bit weird.
If members are still left to sort after all the parties and have been concidered, they will be placed in this party, it is recommended that your last party enable Fill, so that they will at least be placed somewhere.
Because the sorting is somewhat magical when not explained, everyone is given a placement reason as below to at least indicate what happened.
&mem update other memberId party partyName
&party list
Lists the current parties
Also displays the current order, and gives you ready made commands you can copy/paste.
&party info id
Returns the different party options
They are display as the command to set them, so you can copy paste it and change the value
id: Number.
&party new name
Create a new party, with the name you want
name: Text/Any. Multiple words must be encased in quotes ""
&party update name id name
Update existing party name
id: Number.
name: Text/Any. Multiple words must be encased in quotes ""
&party update size id size
Update party size
Granted, the most common sizes are 5 and 20, but you can set whatever if you want.
id: Number.
size: Number.
&party update count id count
Update party count
Let's you choose how many parties of this type you want.
id: Number.
count: Number.
&party update priority id priority
Update party priority
Determines the order which party types are sorted, lowest number first.
id: Number.
priority: Number.
&party update sort id direction property
Update party sorting
Before members are placed in this party type it will sort the remaining members according to this.
id: Number.
direction: Text/Any. Multiple words must be encased in quotes ""
property: Text/Any. Multiple words must be encased in quotes ""
&party update gs id gs
Update party gearscore
Only place members in the party if they have above this gearscore
id: Number.
gs: Number.
&party update ap id ap
Update party AP
Only place members in party if they have above this (AP+AAP/2)
id: Number.
ap: Number.
&party update dp id dp
Update party DP
Only place members in party if they have above this DP
id: Number.
dp: Number.
&party update class id classes
Update party class
Only place members in party if they have one of these classes
id: Number.
classes: Text/Any. Multiple words must be encased in quotes ""
&party update avg id classes
Update party avg class
If set it will make sure to distribute the players with this class evenly among the parties of this type.
id: Number.
classes: Text/Any. Multiple words must be encased in quotes ""
&party update pa classes id classes
Update party PA classes
Most guilds use Witch and Wizzards for PA, but some like including others as well, like Valk
id: Number.
classes: Text/Any. Multiple words must be encased in quotes ""
&party update pa id pa
Update party PA count
How many PA groups you want for the party type. Note that this is for this party type only, and not the whole guild.
id: Number.
pa: Number.
&party update auto id auto
Update party auto placement
Decided if the party type is manual only or allows automatic placement
id: Number.
auto: Boolean, true/false.
&party update fill id fill
Update party fill
If enabled the sorting logic will ignore all other rules and fill the party up with who ever is left to sort. This should be enabled for the last party type with the last priority so that they at least get placed somewhere.
id: Number.
fill: Boolean, true/false.
&party update elixir id elixir
Update party elixir priority
If you for some reason want to prioritize those with elixirs registered, you can.
id: Number.
elixir: Boolean, true/false.
&party update overflow id overflowRuleId
Update party overflow rule
Useful for manual only party types.
id: Number.
overflowRuleId: Number.
&party delete id
Delete a party type
Members manually placed in the party will have it removed.
id: Number.
&party update min id minAttendance
Min nodewar attendance requirement
The amount of members that needs to attend before this party type is used
id: Number.
minAttendance: Number.
&party update event type partyTypeId eventTypeId
Associate party type with a custom event type
When party types are associated with spesific custom event types, they are no longer used for the default party sorting and the custom event type will only use those party types associated with it.
partyTypeId: Number.
eventTypeId: Number.
A lot of info is also displayed with &bot settings
.
First of, you should probably enable developer mode in Discord, there's a good explanation of how you do that here https://discordia.me/developer-mode.
The reason why is that a couple of the commands here require you to copy the Id the channel or message and you need developer mode to do that.
&bot auto setup
Creates a default set of roles and channels, should only be used the first time you are setting up the bot
&bot settings
Displays all your current settings.
Basically the main bread and butter for the &bot
module.
&bot update gsCalc expression
Define your logic for how regular gearscore should be calculated. A members GS is updated the next time they do &mem update
expression must be enclosed by double quotes. And the property names you can use are case sensitive, these are CharacterLevel, Ap, Aap, Dp, Gearscore, Accuracy, Evasion, DamageReduction, PaParty, AxeLevel, Hp, DaysActive, HiddenAp, HiddenAap, HiddenDp, HiddenAccuracy, HiddenEvasion, HiddenDamageReduction. Operators you can use are Add as +, Subtract as -, Multiply as *, Divide as . These can be Enclosed by parentheses as ( and ) if needed.
expression: Text/Any. Multiple words must be encased in quotes ""
&bot update successionGsCalc expression
Define your logic for how succession gearscore should be calculated. A members GS is updated the next time they do &mem update
expression must be enclosed by double quotes. And the property names you can use are case sensitive, these are CharacterLevel, Ap, Aap, Dp, Gearscore, Accuracy, Evasion, DamageReduction, PaParty, AxeLevel, Hp, DaysActive, HiddenAp, HiddenAap, HiddenDp, HiddenAccuracy, HiddenEvasion, HiddenDamageReduction. Operators you can use are Add as +, Subtract as -, Multiply as *, Divide as . These can be Enclosed by parentheses as ( and ) if needed.
expression: Text/Any. Multiple words must be encased in quotes ""
&bot update name template template
Define your own template for how a members character and family name is displayed outside of tables
Remember to have quotes around the template, like &bot update name template "{{FamilyName}}/{{CharacterName}}"
. Valid placeholders are {{FamilyName}}, {{CharacterName}}, {{CharacterClass}}, and {{GearScore}}. Other then that you can decided the order and separators, if any. Note that Discord nicknames can at max be 32 characters long
template: Text/Any. Multiple words must be encased in quotes ""
&bot update nw mention message
Define the message before the nodewar message
Pings @everyone if no member role is set or if there is no roles with the exist permission. If one or more of those exists it will default to pinging the member roles, or use the message defined here. If you don't want any message at all when creating a nodewar you can do &bot update nw mention " "
so it sends a blank message.
message: Text/Any. Multiple words must be encased in quotes ""
&bot update logchannel channelId?
, &bot update log channel channelId?
Used to register the Discord channel the bot sends log and notification messages to.
If channelId is not supplied it will use the channel the command is run in. If the channel can not be mentioned it will try to find it by it's name.
channelId?: Optional. Text/Any. Multiple words must be encased in quotes ""
&bot update voice channelId
Registers the voice channel you use for nodewars.
This command basically only exists to register the channel used by the &nw here noedwarId
command. Voice channels can generally not be @mentioned, so just use the name instead, or copy the Id from developer mode.
channelId: Text/Any. Multiple words must be encased in quotes ""
&bot update member role roleId
The role you assign your regular guild members.
This role gives access to regular commands, tagged as Member here. Run &help commands for a list of the default permissions. This role is also used to determine if the member should be active or not in the database.
roleId: Text/Any. Multiple words must be encased in quotes ""
&bot update officer role roleId
The role you assign your guild officers.
This role gives access to regular and officer commands, but does not determine guild membership, if someone is both a member and officer they need both roles.
roleId: Text/Any. Multiple words must be encased in quotes ""
&bot update time start end
When nodewars are held.
In case you need to adjust it for some reason, summer/winter time etc.
start: Text/Any. Multiple words must be encased in quotes ""
end: Text/Any. Multiple words must be encased in quotes ""
&bot update close minutes
How long (in minutes) before nodewar start time signups will close.
minutes: Number.
&bot update gear reminder amount modifier
How many days inbetween each gear update reminder
The bot will send a DM to those who has not updated their gear in the amount of days you define, but since I don't want this to be abused too much it will only accept 7 days or more.
Modifier can be day/week/month/year or in plural, regardless, the input is saved as days, so &bot update gear reminder 2 weeks
will result in 14 days.
amount: Number.
modifier: Text/Any. Multiple words must be encased in quotes ""
&bot update valid minutes
Default timespan for auto closing the validation period after a nodewar.
Registered in minutes, fires of a one time scheduled task when the password is made public, if the bot should happen to crash for some reason this job will not run.
minutes: Number.
&bot update message messageId
Auto message DM'ed to new members getting the registered Member role
You can enable Discord dev mode and copy the message id, use it with this command and the bot will copy that message for later use. You can find a little guide on how to enable Developer mode here https://discordia.me/developer-mode. Or just edit it on the website.
messageId: Text/Any. Multiple words must be encased in quotes ""
&bot update name val
Set Discord nickname equal to registered character (family) names
This is updated either after the member is updated or once an hour. Can be super buggy though, depending on Discord permissions, name length etc.
val: Boolean, true/false.
&bot update nw priority val
Enable/Disable waiting list priority
Prioritize those in the waiting list by previous nodewars. If someone is in the waiting list and was also on the waiting list for the previous nodewar they will be prioritized over the others in the waiting list for the current nodewar, the priority increases by the number of consecutive nodewars on the waiting list.
val: Boolean, true/false.
&bot update party role val
Have the bot manage party specific roles
The bot runs a job once an hour adding/removing members from party specific roles according to the party they are manually added too. The class is prefixed with P- to distinguish it from other roles.
val: Boolean, true/false.
&bot update partyleader role val
Have the bot manage party specific roles
Same as the &bot update party role
, but will add and remove people from the P-PartyLeaders role, according to them being registered as a party leader or not.
val: Boolean, true/false.
&bot update class role val
Have the bot manage class specific roles
The bot runs a job once an hour adding/removing members from class specific roles according to the class they are registered with. The class is prefixed with C- to distinguish it from other roles.
val: Boolean, true/false.
&bot update announce val
Auto announce undecided for nodewars
Job runs at 16:00 every day and will @mention everyone that is undecided for all upcoming nodewars.
val: Boolean, true/false.
&bot get message
View the registered welcome message.
&bot remove message
Remove the registered welcome message.
&bot update nodewar message val
Customize what is displayed in the nodewar messages, and how certain aspects of the nodewar message behaves
By default the message will try to display everything, but you decide what to display with this command by doing for example &bot update nodewar message 1,5,10,15
.
That would only display 1 = The time in the title, 5 = Party name, 10 = Member class and 15 = Away list.
Each number represents one of the things in the message.
Hiding reactions requires &nw reset nodewarId
to be run for it to update.
So if you just want to remove the party avg gearscore you do:
&bot update nodewar message 1,2,3,4,5,7,8,9,10,11,12,13,14,15,16,17
Leaving out 6.
val: Text/Any. Multiple words must be encased in quotes ""
&bot leave
Make the bot leave this Discord server
Instead of just right click -> kick.
&bot list officers
Returns a list of those the bot has registered as officer, these will have access to the website.
&bot officer add member
Add member as officer, without using the Discord role.
member: Valid values = InternalId, member name, or @mentionMember
&bot officer remove member
Remove member as individual officer.
Will not affect the role, if the member still has the Officer role, they will still have officer rights.
member: Valid values = InternalId, member name, or @mentionMember
&bot officer remove passive memberDiscordId
Same as &bot officer remove, but takes the discord id and does not care about the member being active in the database
memberDiscordId: Text/Any. Multiple words must be encased in quotes ""
&bot countries codeOrName?
Will return a list of the possible countries in the database and their 2 letter ISO code, these can be used with the &mem update country
command.
codeOrName?: Optional. Text/Any. Multiple words must be encased in quotes ""
&bot nodes nodeOrRegion?
Will return a list of the possible nodes in the database, their region and their Id on http://www.somethinglovely.net/bdo/, these can be used with the &nw update node
command.
nodeOrRegion?: Optional. Text/Any. Multiple words must be encased in quotes ""
&bot debug website access
Will try to figure out why you don't have admin rights on the website
&bot mem info options
Displays how the mem info embed is currently configured
&bot mem info display name val
Turn one of the options in the mem info embed on or off
name: Text/Any. Multiple words must be encased in quotes ""
val: Boolean, true/false.
&bot update timezone
Register the timezone you want, and the bot will try to do things according to that time.
&bot update culture
Register the culture you want, it is currently only used for parsing/displaying dates
&bot time
Will return the local time of the bot and what it thinks the time in the registered timezone is
&bot knows guild
The bot is supposed to keep track of which Discord servers it is active in, or has left, with this you can check if it noticed that it joined yours
This is for example used the determine which guilds are used in scheduled tasks
&bot delete server data
Delete all data in the bot assoiciated with this server.
In the beginning there was only the concept of a nodewar, then later on you could give them different types, like siege, wagon etc, and this worked fine to just distinguish the different events, but they didn't really have any different rules, different times etc. This module will hopefully help with that, letting you create your own event types and customize the existing ones.
The default nodewar types can still be used, but with this module you can create custom rules for them which will then be used instead.
To adjust the existing nodewar type simply do &ev type add nameOfNodewarType
and go from there.
If you don't want to adjust the existing ones you can of course use any other name then those.
To use the customized types you can either do &nw new date nameOrIdOfEventType
or create a nodewar like usual with &nw new date
and then update the type with &nw update custom type nodewarId nameOrIdOfEventType
You should find options for most if not all the different ways a nodewar could be customized in the &bot settings
or with options on the specific nodewar,
in some cases they will work as a default value for the event type, like you could say that all sieges are mandatory by adding a customized siege event type and then setting it's mandatory option to true.
Or you could create a type called Sunday Madness with a max limit of 30 etc. etc.
Unlike the regular nodewars where you have not been able to customize the reactions other then remove them, here you have to say which actions a event have,
and which reactions those actions belong to. This is done with the &ev type update action reaction eventTypeName actionName
command,
which will ask you which reaction you want to use for the action and test if the bot can actually use it.
Do note that the bot can only use reactions that exists in the same server the bot is in, so if the reaction you want to use belongs to some emote server, it is highly unlikely that the bot will have access to it.
To customize the party types used for a specific event type all you need to do is create them as usual and update their event type id,
the Id is displayed at the top left for the event type when you do &ev type info
or &ev type list
.
When the party sorting is done the bot will then look for party types for that specific event type, if none exists it will use the default party setup if any.
&ev type add name
Registers a new event type, either cusomize the existing ones or make your own
name: Text/Any. Multiple words must be encased in quotes ""
&ev type list
Returns a list of the custom event types
&ev type info eventType
Returns the different options an event type can have, with examples on how to change them
eventType: Valid values = eventTypeId or name of the event type
&ev type delete eventType
Deletes an event type, does not affect nodewars
eventType: Valid values = eventTypeId or name of the event type
&ev type update name eventType name
Updates the name of the event type
Event type names must be unique, there is also logic trying to check if the name matches one of the existing nodewar types.
eventType: Valid values = eventTypeId or name of the event type
name: Text/Any. Multiple words must be encased in quotes ""
&ev type update type eventType type
Updates the nodewar type
If the custom event type was originally made with a different name then a existing nodewar type this command will register it as a customisation of that nodewar type and change the custom event type name to match the nodewar type
eventType: Valid values = eventTypeId or name of the event type
type: Valid values = nw, nodewar, siege, wagon, tribute, boss, guildboss, training, fun
&ev type update start eventType time
Set the default starting time for the event
eventType: Valid values = eventTypeId or name of the event type
time: Valid values = hour and minutes according to your registered locale, default should be HH:MM
&ev type update end eventType time
Set the default ending time for the event
eventType: Valid values = eventTypeId or name of the event type
time: Valid values = hour and minutes according to your registered locale, default should be HH:MM
&ev type update close eventType minutes
Sets the default time in minutes before the starting time signups closes for this event type
eventType: Valid values = eventTypeId or name of the event type
minutes: Number.
&ev type update message eventType message
Sets the default message showin in the event message
eventType: Valid values = eventTypeId or name of the event type
message: Text/Any. Multiple words must be encased in quotes ""
&ev type update behaviour eventType behaviour
Sets the announcement behaviour for this event type, it can either be none
, day
, or all
This adjusts when the attendance announcement is sent, all
meaning all days before the event, and day
meaning on the day of the event
eventType: Valid values = eventTypeId or name of the event type
behaviour: Valid values = none, never, ondate, day, alldays, all
&ev type update channel eventType channelId?
Set which channel announcements should be sent to
eventType: Valid values = eventTypeId or name of the event type
channelId?: Optional. Text/Any. Multiple words must be encased in quotes ""
&ev type update waiting eventType val
Set if the event type has a waiting list or not
eventType: Valid values = eventTypeId or name of the event type
val: Boolean, true/false.
&ev type update prioritize eventType val
Set if those on the waiting list should be prioritised by how many other events they have been on the waiting list for
eventType: Valid values = eventTypeId or name of the event type
val: Boolean, true/false.
&ev type update max eventType maxAttendanceCount
Set the default max attending count for this event type
eventType: Valid values = eventTypeId or name of the event type
maxAttendanceCount: Number.
&ev type update node eventType nodeId
Set the default node this event takes place
eventType: Valid values = eventTypeId or name of the event type
nodeId: Number. The nodeId uses the same id as http://www.somethinglovely.net/bdo/, just find the node there and select it, then copy the id from the end of the URL.
&ev type update initial eventType initialMessage
Register a initial announce message
eventType: Valid values = eventTypeId or name of the event type
initialMessage: Text/Any. Multiple words must be encased in quotes ""
&ev type update mandatory eventType val
Set if this event type is mandatory by default
eventType: Valid values = eventTypeId or name of the event type
val: Boolean, true/false.
&ev type remove mandatory eventType
Remove the mandatory option all together
eventType: Valid values = eventTypeId or name of the event type
&ev type update action reaction eventType action
Lets you customize which reaction should be used for the different actions
eventType: Valid values = eventTypeId or name of the event type
action: Valid values = none, signon, signup, signoff, signout, signups
&ev type update action position eventType action position
Updates the position the reaction should be in, from left to right
eventType: Valid values = eventTypeId or name of the event type
action: Valid values = none, signon, signup, signoff, signout, signups
position: Number.
&ev type remove action eventType action
Remove a reaction, maybe the members shouldn't be able to sign off?
eventType: Valid values = eventTypeId or name of the event type
action: Valid values = none, signon, signup, signoff, signout, signups
&ev type update display eventType nameOfOption val
Update the different display options in the event message, you can copy the option name from the &ev type info
command.
eventType: Valid values = eventTypeId or name of the event type
nameOfOption: Text/Any. Multiple words must be encased in quotes ""
val: Boolean, true/false.
If you for some reason feel the need to dump the data from the bot into some spreadsheets or something you can export them to .csv files.
&export members
Exports your registered members to a .csv file.
&export all member progress
Exports all member progress
&export nodewars mandatory?
Exports your registered nodewars to a .csv file.
The optional parameter mandatory takes true/false and will filter the registered nodewars on mandatory/no mandatory nodewars if registered as such.
mandatory?: Optional. Boolean, true/false.
&export attendance nodewarId includeUpdateTimestamps?
Exports your registered attendance to a .csv file per nodewar.
You can choose to display update timestamps by adding doing &export attendance nodewarId true
.
nodewarId: Number. The id of the nodewar, you can find it in the top left of the nodewar message or by doing &nw list
includeUpdateTimestamps?: Optional. Boolean, true/false.
&export attendance from to
Exports your registered attendance to a .csv for nodewars in the period
from: Date format defaults to dd.MM.yyyy, but can be configured
to: Date format defaults to dd.MM.yyyy, but can be configured
&export parties nodewarId column?
Exports a nodewars attendees per party to a .csv file.
Can optionally take id/char/fam to have it only return those columns. Do note that parties are "calculated" each time attendance is changed, so this can change a lot.
nodewarId: Number. The id of the nodewar, you can find it in the top left of the nodewar message or by doing &nw list
column?: Optional. Text/Any. Multiple words must be encased in quotes ""
&export answers answerType?
Exports members custom question answers to a .csv file.
Will by defaul return &mem update
questions, and can optionally return application answers by adding 2 as the type parameter
answerType?: Optional. Number.
It's all fun and games until someone pulls out the graphs.
&graph growth year? graphType?
Graph displaying how many members joined per month, minus how many members left per month (and are still passive)
year?: Optional. Number.
graphType?: Optional. Text/Any. Multiple words must be encased in quotes ""
&graph gear memberId?
Radar graph displaying most important gear stats for member or guild avg
memberId?: Optional. Text/Any. Multiple words must be encased in quotes ""
&graph gs nodewarId? graphType?
Graph displaying members by their Gearscore.
Counts members in intervals of 10. Optional parameter nodewarId can be used to filter it on a specific nodewar.
nodewarId?: Optional. Number. The id of the nodewar, you can find it in the top left of the nodewar message or by doing &nw list
graphType?: Optional. Text/Any. Multiple words must be encased in quotes ""
&graph class nodewarId? graphType?
Graph displaying members by their class.
Optional parameter nodewarId can be used to filter it on a specific nodewar.
nodewarId?: Optional. Number. The id of the nodewar, you can find it in the top left of the nodewar message or by doing &nw list
graphType?: Optional. Text/Any. Multiple words must be encased in quotes ""
&graph horse nodewarId? graphType?
Graph displaying members by what horse they have registered.
Optional parameter nodewarId can be used to filter it on a specific nodewar.
nodewarId?: Optional. Number. The id of the nodewar, you can find it in the top left of the nodewar message or by doing &nw list
graphType?: Optional. Text/Any. Multiple words must be encased in quotes ""
&graph level nodewarId? graphType?
Graph displaying members by what level they are.
Optional parameter nodewarId can be used to filter it on a specific nodewar.
nodewarId?: Optional. Number. The id of the nodewar, you can find it in the top left of the nodewar message or by doing &nw list
graphType?: Optional. Text/Any. Multiple words must be encased in quotes ""
&graph axe nodewarId? graphType?
Graph displaying members by what axe they have registered.
Optional parameter nodewarId can be used to filter it on a specific nodewar.
nodewarId?: Optional. Number. The id of the nodewar, you can find it in the top left of the nodewar message or by doing &nw list
graphType?: Optional. Text/Any. Multiple words must be encased in quotes ""
&graph nw days memberId? graphType?
Graph displaying what day of the week has the best attendance.
Optional parameter memberId can be used to filter it on a specific member.
memberId?: Optional. Text/Any. Multiple words must be encased in quotes ""
graphType?: Optional. Text/Any. Multiple words must be encased in quotes ""
&graph nw result
Pie graph displaying your nodewar results.
&graph nw nodes
Bar graph displaying the 5 most visited nodes
&graph age nodewarId? graphType?
Graph displaying members by their age.
Optional parameter nodewarId can be used to filter it on a specific nodewar.
nodewarId?: Optional. Number. The id of the nodewar, you can find it in the top left of the nodewar message or by doing &nw list
graphType?: Optional. Text/Any. Multiple words must be encased in quotes ""
&graph country nodewarId? graphType?
Graph displaying members by their country.
Optional parameter nodewarId can be used to filter it on a specific nodewar.
nodewarId?: Optional. Number. The id of the nodewar, you can find it in the top left of the nodewar message or by doing &nw list
graphType?: Optional. Text/Any. Multiple words must be encased in quotes ""
&graph member gs memberId
Line graph displaying member gearscore progress
This is registered once each morning, depending on there being changes. Wait until tomorrow is today's change is not showing.
memberId: Text/Any. Multiple words must be encased in quotes ""
&graph nw gs warsToTake?
Line graph displaying Gearscore for the last 20 nodewars
Use the parameter warsToTake to adjust how many wars you want included.
warsToTake?: Optional. Number.
&graph nw att warsToTake?
Line graph displaying attendance for the last 20 nodewars
Use the parameter warsToTake to adjust how many wars you want included.
warsToTake?: Optional. Number.
&graph nw signup nodewarId graphType?
Graph displaying attendance status for a nodewar.
nodewarId is not optional for this one.
nodewarId: Number. The id of the nodewar, you can find it in the top left of the nodewar message or by doing &nw list
graphType?: Optional. Text/Any. Multiple words must be encased in quotes ""
The bot has a default set of permission set by the officer and member roles you set up in the bot settings, but in addition to those you can set up custom permissions here.
The permission are set by allowing or denying a user or role, by matching the beginning of a command, so denying the command "&mem info "
, with the space at the end will deny someone from looking up others information, but still allow them to view their own. Remember to include the "&" at the beginning.
Command text Requires " around it, like "&mem info".
Bot owner(me), Guild owners and administrators can not be locked out, they will allways be allowed to run a command, but other then that the role permissions are evaluated in the order they have in the Discord servers Role settings, individual command permissions are evaluated before these and will always be in the order of deny then allow.
If you don't set the default officer/member roles in &bot settings, you can do custom default permissions by allowing botOfficer
, botMember
, exist
or webOfficer
for your Discord roles with &perm allow role @yourRole botOfficer
etc.
&perm list
Returns a list of the registered permissions.
&perm allow idType memberOrRoleId command
Define a rule allowing someone to run a command. Or custom role permissions.
Takes either role or user as IdType for commands, then you need to mention that member or role, before defining the command to match against.\nExample: &perm allow user @someMember "&mem away"
will allow that member themselves as away.
In this particular example you would probably deny "&mem away "
with the space at the end so they are not allowed to register others as away.
Instead of a command you can also use botOfficer
, botMember
, exist
or webOfficer
, to specify that a role should have the default officer command permissions (botOfficer),
the default member command permissions (botMember),
can be active in the database and have member access to the website (exist),
or have officer permissions on the website (webOfficer).
Do note that these can only be given to roles.
idType: Text/Any. Multiple words must be encased in quotes ""
memberOrRoleId: Text/Any. Multiple words must be encased in quotes ""
command: Text/Any. Multiple words must be encased in quotes ""
&perm deny idType memberOrRoleId command
Define a rule denying someone to run a command.
Takes either role or user as IdType, then you need to mention that member or role, before defining the command to match against.
Example: &perm deny role @yourMemberRole "&mem info "
will deny your members from viewing others detailed info.
idType: Text/Any. Multiple words must be encased in quotes ""
memberOrRoleId: Text/Any. Multiple words must be encased in quotes ""
command: Text/Any. Multiple words must be encased in quotes ""
&perm remove permissionId
Remove a custom permission.
Use the &perm list
command to find the Id's.
permissionId: Number.
You can use the task module to configure the schedule for some of the bots automated tasks yourself.
The modifier param can take once, hour, day, week, month and year. So say you want to change the nodewar announcement to run at 17:00 you can do:
&task add attendance 17 0 1 day
.
If you don't care at what time the task is run but just want it to run every hour you can do: &task add attendance 0 0 1 hour
.
It will then run every hour dependent on when you added the task or when the bot was last started.
&task list
Get a list of your registered scheduled tasks
&task list running
Get a list of the actual schedule for your tasks, some tasks may be listed twice, as in the next time it will be run, and the next time it will be repeated.
&task add birthday hour minute repeat modifier
Add your own schedule for when the birthday announcement job should be run. Defaults to 9 in the morning, once a day.
hour: Number.
minute: Number.
repeat: Number.
modifier: Text/Any. Multiple words must be encased in quotes ""
&task add attendance hour minute repeat modifier
Want to run the attendance announcement every damned hour? Now you can! Defaults to 16:00, once a day.
I would still recommend maybe only running it twice or so a day, you can add the same job multiple times if you say want to run it at 16:00 and 17:00.
hour: Number.
minute: Number.
repeat: Number.
modifier: Text/Any. Multiple words must be encased in quotes ""
&task add trial hour minute repeat modifier
Set when the trial reminder should be run, it will still only remind people on the day of question, and only once, but now you can set when. Defaults to 15:50.
hour: Number.
minute: Number.
repeat: Number.
modifier: Text/Any. Multiple words must be encased in quotes ""
&task add gear hour minute repeat modifier
Will still only DM members as often as is configured in the bot settings, and that has a 7 day minimum, but you can decide when to run it. Defaults to 15:30.
hour: Number.
minute: Number.
repeat: Number.
modifier: Text/Any. Multiple words must be encased in quotes ""
&task add custom hour minute repeat modifier message channel?
Will send a the message you set to the registered log channel or the channel you decide
hour: Number.
minute: Number.
repeat: Number.
modifier: Text/Any. Multiple words must be encased in quotes ""
message: Text/Any. Multiple words must be encased in quotes ""
channel?: Optional. Text/Any. Multiple words must be encased in quotes ""
&task add nodewar hour minute dayOfWeek
Adds a task that automatically creates new nodewars in the channel up to a week ahead.
Nodewar will be created in the channel you run the command. Task is run every day at the time you define. Will not create a nodewar when the task is run on the day you defined, or when there already is a nodewar created for the day defined in the channel. Say you add a task that runs 1 in the morning for mondays, when there already is a nodewar in the channel it will then create a nodewar for the next monday on the tuesday after the current monday nodewar.
hour: Number.
minute: Number.
dayOfWeek: Valid values = sunday, sun, monday, mon, tuesday, tue, wedensday, wed, thursday, thu, friday, fri, saturday, sat
&task remove id
Will remove the schedule, from the DB and the cancel the current running ones. Use &task list
for a list of Id's you can use with this command.
id: Number.
&task add discord role job
No fuss, just run the job updating discord roles in the database now.
&role self roleId
Add/remove roles with reactions
You need to be able to @mention the role to use this. Will add a message with a plus and minus reaction, which members of your Discord can use to remove or add a role to themselves.
roleId: Text/Any. Multiple words must be encased in quotes ""
&role list roleType?
roleType?: Optional.
&mem update
, &mem apply
, &nw new
can be customized with additional questions. &mem apply
has no default questions so it is completely up to you how you want to use it, results can be viewed with &mem list applications
and &mem application
.
&mem update
and &nw new
both have default questions, which can be customized by adding a question with their updateType and, and then setting the position/question, it will then be used instead of the default, but removing them will only revert back to the default.
In short, the default questions are required, since they are used by other functionality in the bot, like the party sorting.
Position starts at 1, but does not account for the default questions, so for &mem update
you probably want to start your own questions at 8, and &nw update
at 2.
The memberTypeToUpdate and nodewarTypeToUpdate parameters includes options for both member and nodewars, but they will not mix, you can add a question for AP to a nodewar, it will be asked, but it will not be used.
&com mem update add question memberTypeToUpdate position?
Add question to &mem update
question: Text/Any. Multiple words must be encased in quotes ""
memberTypeToUpdate: Valid values = custom, fam, family, familyname, char, character, charactername, class, classes, level, lvl, ap, aap, awakened, awakenedap, awakening, awakeningap, awap, dp, accuracy, acc, eva, evasion, dr, damagereduction, axe, consumable, elixir, elixirs, birth, born, birthday, birthdate, country, horse, hiddenap, hiddenaap, hiddendp, hiddenaccuracy, hiddenacc, hiddenevasion, hiddeneva, hiddendamagereduction, hiddendr, verification, verify, proof, prove, nodewarmessage, node, mandatory, type, password, closed, hp, health, succ, succession, max, date
position?: Optional. Number.
&com mem apply add question position?
Add question to &mem apply
question: Text/Any. Multiple words must be encased in quotes ""
position?: Optional. Number.
&com nw new add question nodewarTypeToUpdate position?
Add question to &nw new
question: Text/Any. Multiple words must be encased in quotes ""
nodewarTypeToUpdate: Valid values = custom, fam, family, familyname, char, character, charactername, class, classes, level, lvl, ap, aap, awakened, awakenedap, awakening, awakeningap, awap, dp, accuracy, acc, eva, evasion, dr, damagereduction, axe, consumable, elixir, elixirs, birth, born, birthday, birthdate, country, horse, hiddenap, hiddenaap, hiddendp, hiddenaccuracy, hiddenacc, hiddenevasion, hiddeneva, hiddendamagereduction, hiddendr, verification, verify, proof, prove, nodewarmessage, node, mandatory, type, password, closed, hp, health, succ, succession, max, date
position?: Optional. Number.
&com mem apply list
View custom questions for &mem apply
&com mem update list
View custom questions for &mem update
&com nw new list
View custom questions for &nw new
&com delete questionId
Delete a question
Use the id from the list commands
questionId: Number.
&com update question questionId questionText
Update question text
Use the id from the list commands
questionId: Number.
questionText: Text/Any. Multiple words must be encased in quotes ""
&com update position questionId position
Update question position
Use the id from the list commands
questionId: Number.
position: Number.
Let's you control what notifications the bot sends to the registered notification channel.
Use ¬if list
for the current list of notifications and their id's, then you can use those id's with ¬if update notificationTypeId trueOrFalse
.
¬if list
Returns a list of every notification and if it is enabled or not
¬if update notificationTypeId trueOrFalse
Updates the chosen notification, use ¬if list
for a list of the current notifications.
notificationTypeId: Number.
trueOrFalse: Boolean, true/false.
Discord bots are required by Discords terms and conditions to provide and adhere to a privacy policy. Do note that this bot is maintained by a one man show
, and that I personally want to store as little about you as possible, which is mostly motivated by me not wanting to deal with issues like this very privacy statement.
In addition to the data you provide to the bot, the bot stores unique Discord identifiers, these are:
Since birthdates and countries are associated with a persons unique Discord Id it is then technically defined as data which can be combined with other datasets to identify a person, for this to be relevant it would require the data to be shared in the first place, but please keep this in mind before using this functionality.
Data is generally not shared, the bot uses a third party for system logs, which contain data for debugging purposes. The debugging data is only available to me, and only for 2 weeks.
This may be changed at any time, but changes will be mentioned in the Patch notes in the bot's own Discord server.
Please contact me on Discord (Lam#6960) if there are any questions, or you want me to delete your data.
It is greatly apreciated if you consider becoming a Patreon :) It helps me finance the bot, and gives you some perks :)
The integration expects you to be a member of the Discord first. It works by the Patreon bot setting the role on that discord, then Alfred (a simple bot for that discord) will notice that and update the database, the patreon tier will be used in the bot. If for some reason this doesn't work, please don't hesitate to contact me, and I'll get it sorted!