TerryPurdue (talk | contribs) (TerryPurdue moved page User:TerryPurdue/CommunityBot to User:TerryPurdue/CommunityBot/Install: Need to move main page here.) |
m (→Commands: Correct 2 typos in Find Command) |
||
(44 intermediate revisions by 9 users not shown) | |||
Line 1: | Line 1: | ||
# | Communitybot is an automated chat bot for use in the Waze Discord servers. | ||
== Features == | |||
==== Role Syncing ==== | |||
Communitybot can sync your roles across the regional Discord servers. A limited number of roles are set by the bot for security reasons; others must be set manually and are not synced automatically. The table below gives the available roles and the permission required to set them. For example, the L6 role can only be given by champs, and only when the command is used in the national server. | |||
:''NOTE: Any command which includes @username in the table below cannot be used on yourself--it must be assigned by someone else with the appropriate permissions.'' | |||
:''NOTE: When setting the roles for a user using the below commands the user must be online otherwise the command will fail.'' | |||
{| class="wikitable" | |||
!Role | |||
!Bot Command | |||
!Role Required | |||
|- | |||
|Country Manager (CM) | |||
|!cm @username | |||
|CM or above | |||
|- | |||
|State Manager (SM) | |||
|!sm @username | |||
|SM or above | |||
|- | |||
|Large Area Manager (LAM)<!-- The LAM role is applied in those regions that use LAMs. In other regions, the bot will assign the AM role. --> | |||
|!lam @username | |||
|SM or above | |||
|- | |||
|Area Manager (AM) | |||
|!am @username | |||
|SM or above | |||
|- | |||
|Mentor | |||
|!mentor @username | |||
|SM or above | |||
|- | |||
|Region-specific | |||
|!region @username | |||
|SM or above | |||
|- | |||
|Level 6 (L6) | |||
|!l6 @username | |||
|Champ in national server | |||
|- | |||
|Level 5 (L5) | |||
|!l5 @username | |||
|SM or above | |||
|- | |||
|Level 4 (L4) | |||
|!l4 @username | |||
|SM or above | |||
|- | |||
|Level 3 (L3) | |||
|!l3 @username | |||
|SM or above | |||
|- | |||
|Level 3 (L3) | |||
|!l3 | |||
|Anyone (role is assigned to command user) | |||
|- | |||
|Level 2 (L2) | |||
|!l2 @username | |||
|SM or above | |||
|- | |||
|Level 2 (L2) | |||
|!l2 | |||
|Anyone (role is assigned to command user) | |||
|- | |||
|Level 1 (L1) | |||
|!l1 @username | |||
|SM or above | |||
|- | |||
|Level 1 (L1) | |||
|!l1 | |||
|Anyone (role is assigned to command user) | |||
|} | |||
== Commands == | |||
=== Find === | |||
You can search for segments or places with the command <code>!find</code>, using the format <code>!find segment segment#</code> or <code>!find place venueID#</code> | |||
Examples: | |||
Segment: <code>!find segment 2</code> which produces the permalink to the location for segment 2 in Lincoln, NE. <code>https://www.waze.com/en-US/editor?env=usa&lon=-96.7032589152404&lat=40.8170342232275&zoom=5&segments=2</code> | |||
Place: <code>!find place 185467269.1854410546.273567</code> which produces the permalink to the location for The White House, Washington, DC. <code>https://www.waze.com/en-US/editor?env=usa&lon=-77.03653&lat=38.89767&zoom=6&marker=true&venues=185467269.1854410546.273567</code> | |||
=== Glossary === | |||
You can search for glossary terms with the command <code>!glossary</code>, using the format <code>!glossary search term</code>. | |||
=== Lookup === | |||
Some channels may have a linked Google Spreadsheet. If your channel does, you can search it using <code>!lookup</code>. An example command is <code>!lookup search term</code>. | |||
====Add/modify a lookup sheet==== | |||
To add a lookup sheet to a channel use the <code>!lookup add</code> command and specify the sheet ID. Example: If you have a Google Sheet link like <code>https://docs.google.com/spreadsheets/u/1/d/1-f-JTWY5UnBx-rFTa4qhyGMYdHBZWNirUTOgn222zMY/pubhtml?gid=1292189415&single=true</code> the sheet ID is <code>1-f-JTWY5UnBx-rFTa4qhyGMYdHBZWNirUTOgn222zMY</code>. For the bot to be able to search the sheet it must be published to the web. | |||
If multiple tabs are published to the web, you must specify the gid for the sheet you want to run the <code>!lookup</code> against. You do this when you add the sheet. In the link above, a gid is given (<code>1292189415</code>). To specify the sheet and tab you would add a space after the sheet ID and add the gid from the URL. Ex: <code>!lookup add 1-f-JTWY5UnBx-rFTa4qhyGMYdHBZWNirUTOgn222zMY 1292189415</code>. | |||
To change the sheet that is used for the channel, run the <code>!lookup add</code> command with the new sheet ID and it will be modified. | |||
This is restricted to SM or above. | |||
====Remove lookup sheet==== | |||
To remove a lookup sheet from a channel use the <code>!lookup remove</code> command. | |||
This is restricted to SM or above. | |||
=== Outreach=== | |||
The <code>!outreach</code> command is the same as [[#Lookup|lookup]] but dedicated to the use of lookup searches for outreach sheets, due to the number of states/regions that maintain these. This frees up the <code>!lookup</code> command for other sheet searches. | |||
=== TTS Abbreviations Search === | |||
To search the TTS abbreviation sheet (https://wazeopedia.waze.com/wiki/USA/Abbreviations_and_acronyms) can be searched with the <code>!abbreviation</code> or <code>!abbr</code> command. This is available in all channels/servers and direct message with CommunityBot. | |||
=== Wazeopedia Search === | |||
You can search Wazeopedia (WoP) using the <code>!search</code> or <code>!w</code> commands. This will search WoP as if you were doing the search from the searchbox on a WoP page. Due to this search working the same as WoP some results may be confusing - when searching on WoP if you have an exact match it can automatically direct you to that page without providing autocomplete results or presenting a search page, however when run through the bot it can provide several results, some of which may not be very accurate. | |||
=== Tiles === | |||
You can query the last NA and INTL tile update with the command <code>!tiles</code>. | |||
=== Profile === | |||
You can generate profile links for a given editor name with the <code>!profile</code> command. An example command is <code>!profile EditorName</code>. This will return the editor profile, forum profile and wiki profile links. The bot will check if the forum and wiki profiles exist and if they do not it will return <code>No forum profile</code> and <code>No wiki profile</code>, respectively. | |||
=== Autoreplies === | |||
An autoreply is a message that the bot will reply with automatically when a certain phrase is said in chat. Autoreplies can be created at the channel, server, or global levels. The syntax is by nature somewhat convoluted due to the features provided. To trigger an autoreply, the keyword is sent preceded by an exclamation mark <code>!</code>. | |||
Channel and server autoreplies can be set by SM+, and global autoreplies can be set only in the national server by champs. | |||
The base command is <code>!autoreplies</code>, by itself this will bring up a list of available autoreplies for the area it is used in. To add or remove autoreplies, send the command from the server, and/or channel you want it to apply to. The command is made of four parts; '''base + action + area + trigger term + autoreply text'''.<br /> | |||
'''base''' = <code>!autoreplies</code><br /> | |||
'''action''' = <code>add</code> or <code>remove</code><br /> | |||
'''area''' = <code>global</code>, <code>server</code>, or <code>channel</code><br /> | |||
'''trigger term''' = the keyword that when typed will trigger this response. Do not include the preceding exclamation mark.<br /> | |||
'''autoreply text''' = the full formatted text that should be return when the trigger term sent. | |||
Here's an example command: | |||
<code>!autoreplies add server testing This is a test.</code> | |||
<code>!autoreplies remove global anothertest This is another test.</code> | |||
====Available autoreplies==== | |||
Below is a list of some of the global autoreplies which have been set. | |||
{|class="wikitable sortable" | |||
!Trigger !! Response Text | |||
|- | |||
|!help || Link to this page | |||
|- | |||
|!copyright<br>!sources<br>!externalsources || Information about using external sources and © content | |||
|- | |||
|!nickname || Instructions to set up a proper nickname on Discord | |||
|- | |||
|!ping<br>!status || Check if bot is working | |||
|- | |||
|!source || Link to source code for the bot | |||
|- | |||
|!soon || 🔜 parody | |||
|- | |||
|!VEOC || Information about the Virtual Emergency Operations Center (VEOC) and a VEOC server invite | |||
|} | |||
=== Keyword Subscriptions === | |||
You can subscribe to keywords and the bot will message you whenever one is used in a channel that you're in. The commands are somewhat complicated because of the functionality available. Use your personal chat with CommunityBot to manage these. | |||
==== Notes ==== | |||
Keywords must be at least 2 characters long. Regular keywords are not case-sensitive but regex keywords are by default (regex special characters such as <code>\W</code> are respected) - more below. | |||
==== Base command ==== | |||
The base command to use is <code>!keyword</code> or <code>!subscription</code>, or variants of these. | |||
==== Regular Expressions ==== | |||
Regular expression keywords are supported. To use them, create a keyword as normal but wrap your regex in <code>/</code>. For example, <code>!keyword add /.*/</code>. Regex keyword are case sensitive by default. To make the keyword case insensitive end your regex with <code>/i</code> instead of <code>/</code>. Ex: <code>/wAzE/</code> will match with <code>wAzE</code> but not <code>waze</code>. <code>/wAzE/i</code> will match both <code>wAzE</code> and <code>waze</code>. | |||
==== List keywords ==== | |||
Your existing keywords can be listed using <code>!keyword list</code>. | |||
==== Add a keyword ==== | |||
To add a keyword, use <code>!keyword add keywordhere</code>. You can use multiple words, but note that you will only be messaged if the entire phrase you use is a match. To add multiple separate keywords, you need to use the command multiple times in individual messages. | |||
====Test a keyword==== | |||
You can test your keywords by using the <code>!keyword test</code> command. This can be run in a channel or a direct message with CommunityBot. Ex: <code>!keyword test some text to see if your keyword is triggered</code>. If any of your keywords are triggered by your test text CommunityBot will alert you as to which keywords were triggered. This is a good way to make sure you do not duplicate keywords, and you don't have to wait for someone to respond with a test message. | |||
==== Remove a keyword ==== | |||
Remove keywords using <code>!keyword remove keywordhere</code>. The keyword must exactly match one of your existing keywords or the command will fail. | |||
==== Ignoring keywords in servers or channels ==== | |||
By default, the bot will message you if a keyword matches in any channel that you're in. You can ignore specific keywords in certain servers or channels with these commands. To find the server or channel ID, see the Getting IDs section below. | |||
===== List ignored keywords ===== | |||
Your ignored keywords can be listed using <code>!keyword ignore list</code>. | |||
===== Ignore a keyword in a server ===== | |||
To ignore a server: <code>!keyword ignore server serverid keywordhere</code>. For example, you could ignore the keyword "testing" in the national server by using <code>!keyword ignore server 300471946494214146 testing</code>. | |||
===== Ignore a keyword in a channel ===== | |||
Ignoring a channel uses the same syntax as ignoring a server, except the word "channel" is used instead of "server": <code>!keyword ignore channel channelid keywordhere</code>. For example, to ignore the keyword "testing" in the GLR channel on the national server, you would use <code>!keyword ignore channel 300568375900504074 testing</code>. | |||
===== Unignore a server or channel ===== | |||
Unignoring a server or channel uses the same syntax as ignoring, but with the word "unignore" instead of "ignore". For example: <code>!keyword unignore server 300471946494214146 testing</code>. | |||
==== Mute servers or channels ==== | |||
You can mute all keywords from a given server or channel using these commands. | |||
===== Mute a server ===== | |||
Mute a server using <code>!keywords mute server serverid</code>. For example, <code>!keyword mute server 300471946494214146</code>. | |||
===== List muted keywords ===== | |||
Your muted keywords can be listed using <code>!keyword mute list</code>. | |||
===== Mute a channel ===== | |||
Mute a channel using <code>!keyword mute channel channelid</code>. For example, <code>!keyword mute channel 300568375900504074</code>. | |||
===== Unmute a server or channel ===== | |||
Unmute a server or channel using the same commands as above, except using <code>unmute</code> instead of <code>mute</code>. | |||
===DND mode=== | |||
You can temporarily silence keyword alerts using the <code>!dnd</code> command. Running the command alone (<code>!dnd</code>) will return the amount of time left on DND mode if it is enabled. | |||
====Enable DND==== | |||
To enable DND mode use the <code>!dnd</code> command followed by the number of hours you want DND mode enabled. Ex: <code>!dnd 8.5</code> will enable DND for 8.5 hours. | |||
====Disable DND==== | |||
To disable DND mode use the <code>!dnd disable</code> or <code>!dnd off</code> command. | |||
===Scripts=== | |||
The WazeDev group is maintaining a list of community scripts to search in order to find the current version, current active developer, install & forum links. This list can be searched by running the <code>!scripts search term</code> command. To view the scripts sheet run <code>!scripts</code> If a script is missing from this sheet and you feel it should be added, contact MapOMatic or JustinS83 to get it added. | |||
===Server Leave Alerts=== | |||
To have CommunityBot notify a channel when a user leaves the server use the <code>!serverleave</code> command. Running <code>!serverleave</code> without any other parameters will return if the server has a channel designated. Only one channel can be designated per server. | |||
This is restricted to administrators of the server. | |||
====Add==== | |||
To designate a channel to be used for server leave messages use the <code>!serverleave add</code> command and specify the channel id. Example: <code>!serverleave add 299563059695976451</code>. You can also directly reference the channel - ex: <code>!serverleave add #general</code>. | |||
To modify the channel used, run the <code>!serverleave add</code> command with the new channel number. | |||
====Remove==== | |||
To remove the channel designation run the <code>!serverleave remove</code> in any channel on the server. | |||
===Permalink Extraction=== | |||
To remove permalinks from a message, and remove the layer information, use the <code>!pl</code> command followed by the text that includes the permalink(s). If multiple permalinks are found they will all be extracted, layer information stripped, and returned in a message separated by the pipe (|) character. This command works well in a direct message to CommunityBot to reduce unneeded public messages. | |||
===Announce=== | |||
Champs are able to use the <code>!announce</code> command to post a message to all US servers that have opted to create an #announcements channel. Ex: <code>!announce Text to be shown in all announce channels</code>. This will be used for posting information that needs to be spread nationwide and for bot update information. | |||
===Server join messages=== | |||
To have CommunityBot send a direct message to an editor that joins a server use the <code>!serverjoin</code> command. This can be used to welcome them to the server/region and send them some basic information for the region or direct them toward important channels on the server. | |||
====Add==== | |||
To add a join message to a server use the <code>!serverjoin add</code> command. Ex: <code>!serverjoin add Welcome to the server!</code>. This command must be run on the server that you wish to add the message to. | |||
====Remove==== | |||
To remove a join message from a server use the <code>!serverjoin remove</code> command. | |||
Note: This command is restricted to champs on the US servers, and admin on the Global and Waze Scripts servers. | |||
===Fun=== | |||
Some fun commands to try that are not related to discord/Waze. | |||
====xkcd==== | |||
Run the <code>!xkcd</code> command to return a random xkcd comic. To search for a specific comic number run <code>!xkcd comicNumber</code>, ex: <code>!xkcd 149</code>. | |||
====Diceroll==== | |||
To roll a die (or multiple dice) use the <code>!diceroll</code> command. If <code>!diceroll</code> is used without any parameters it will roll a normal 6 sided die. You can specify the number of dice to roll and the number of sides on each die. Example: <code>!diceroll 5d10</code> will roll 5 dice, each with 10 sides. Multiple entries can be specified: <code>!diceroll 4d8 5d5 8d15</code> and results for each will be shown like <code>4d8 5d5 8d15 = (3+3+2+4)+ (1+1+1+2+3)+ (12+6+14+13+4+14+6+4) = 93</code>. | |||
====Slap==== | |||
You can slap someone (or anything) with the <code>/slap</code> command. Example: <code>/slap CommunityBot</code>. | |||
====Dad jokes==== | |||
You love to hate them. <code>!dadjoke</code>. | |||
====Facts==== | |||
You can learn something new every day. | |||
=====Dog facts===== | |||
<code>!dogfact</code> | |||
=====Number facts===== | |||
<code>!numberfact</code> | |||
== Getting IDs == | |||
Several bot commands use either channel or server IDs to identify those channels or servers. Getting these IDs is relatively straightforward. Navigate to the channel or server that you want the ID for, and look at the URL of the page. For example, the #michigan channel in the GLR server has this URL: | |||
<code><nowiki>https://discordapp.com/channels/299563059695976451/299567520652853248</nowiki></code> | |||
In all URLs, the first large number is the server ID and the second number is the channel ID. In this example, the server ID is <code>299563059695976451</code>, and the channel ID is <code>299567520652853248</code>. | |||
Alternatively, you can use the command <code>!whereami</code> and the bot will give you these IDs. | |||
'''Note that the server and channel IDs may be the same!''' | |||
== Technical == | |||
=== Adding CommunityBot === | |||
# ''If needed'': create '''Bot''' role (CM < Bot < Champ) | |||
# Use [https://discordapp.com/oauth2/authorize?client_id=359544570578731008&scope=bot&permissions=67619840 this link] to add CommunityBot to new server | |||
# Right click on CommunityBot, assign '''Bot''' role | |||
=== Discord === | |||
{| | |||
|- | |||
| style="text-align: right;" | '''UUID''': || <code>communitybot#7894</code> | |||
|- | |||
| style="text-align: right;" | '''Internal ID''': || <code>359544570578731008</code> | |||
|} | |||
=== Implementation === | |||
CommunityBot is a fork of [https://github.com/vaindil vaindil]'s open source project, [https://github.com/vaindil/wazebot-discord wazebot-discord]. | |||
{| | |||
|- | |||
| style="text-align: right;" | '''Language''': || C# (pronounced "C-Sharp") | |||
|- | |||
| style="text-align: right;" | '''Runtime Environment''': || .NET Core | |||
|- | |||
| style="text-align: right;" | '''Source Code''': || [https://gitlab.com/SixbucksSolutions/CommunityBot GitLab] | |||
|- | |||
| style="text-align: right;" | '''Software License''': || [https://gitlab.com/SixbucksSolutions/CommunityBot/blob/master/LICENSE GNU General Public License version 3] (aka "GPLv3") | |||
|} | |||
=== Installation === | |||
There are detailed [[CommunityBot/Install | installation instructions]] for CommunityBot. | |||
=== Build/Run === | |||
There are detailed [[CommunityBot/BuildRun | build/run instructions]] for CommunityBot. |
Latest revision as of 00:12, 18 October 2020
Communitybot is an automated chat bot for use in the Waze Discord servers.
Features
Role Syncing
Communitybot can sync your roles across the regional Discord servers. A limited number of roles are set by the bot for security reasons; others must be set manually and are not synced automatically. The table below gives the available roles and the permission required to set them. For example, the L6 role can only be given by champs, and only when the command is used in the national server.
- NOTE: Any command which includes @username in the table below cannot be used on yourself--it must be assigned by someone else with the appropriate permissions.
- NOTE: When setting the roles for a user using the below commands the user must be online otherwise the command will fail.
Role | Bot Command | Role Required |
---|---|---|
Country Manager (CM) | !cm @username | CM or above |
State Manager (SM) | !sm @username | SM or above |
Large Area Manager (LAM) | !lam @username | SM or above |
Area Manager (AM) | !am @username | SM or above |
Mentor | !mentor @username | SM or above |
Region-specific | !region @username | SM or above |
Level 6 (L6) | !l6 @username | Champ in national server |
Level 5 (L5) | !l5 @username | SM or above |
Level 4 (L4) | !l4 @username | SM or above |
Level 3 (L3) | !l3 @username | SM or above |
Level 3 (L3) | !l3 | Anyone (role is assigned to command user) |
Level 2 (L2) | !l2 @username | SM or above |
Level 2 (L2) | !l2 | Anyone (role is assigned to command user) |
Level 1 (L1) | !l1 @username | SM or above |
Level 1 (L1) | !l1 | Anyone (role is assigned to command user) |
Commands
Find
You can search for segments or places with the command !find
, using the format !find segment segment#
or !find place venueID#
Examples:
Segment: !find segment 2
which produces the permalink to the location for segment 2 in Lincoln, NE. https://www.waze.com/en-US/editor?env=usa&lon=-96.7032589152404&lat=40.8170342232275&zoom=5&segments=2
Place: !find place 185467269.1854410546.273567
which produces the permalink to the location for The White House, Washington, DC. https://www.waze.com/en-US/editor?env=usa&lon=-77.03653&lat=38.89767&zoom=6&marker=true&venues=185467269.1854410546.273567
Glossary
You can search for glossary terms with the command !glossary
, using the format !glossary search term
.
Lookup
Some channels may have a linked Google Spreadsheet. If your channel does, you can search it using !lookup
. An example command is !lookup search term
.
Add/modify a lookup sheet
To add a lookup sheet to a channel use the !lookup add
command and specify the sheet ID. Example: If you have a Google Sheet link like https://docs.google.com/spreadsheets/u/1/d/1-f-JTWY5UnBx-rFTa4qhyGMYdHBZWNirUTOgn222zMY/pubhtml?gid=1292189415&single=true
the sheet ID is 1-f-JTWY5UnBx-rFTa4qhyGMYdHBZWNirUTOgn222zMY
. For the bot to be able to search the sheet it must be published to the web.
If multiple tabs are published to the web, you must specify the gid for the sheet you want to run the !lookup
against. You do this when you add the sheet. In the link above, a gid is given (1292189415
). To specify the sheet and tab you would add a space after the sheet ID and add the gid from the URL. Ex: !lookup add 1-f-JTWY5UnBx-rFTa4qhyGMYdHBZWNirUTOgn222zMY 1292189415
.
To change the sheet that is used for the channel, run the !lookup add
command with the new sheet ID and it will be modified.
This is restricted to SM or above.
Remove lookup sheet
To remove a lookup sheet from a channel use the !lookup remove
command.
This is restricted to SM or above.
Outreach
The !outreach
command is the same as lookup but dedicated to the use of lookup searches for outreach sheets, due to the number of states/regions that maintain these. This frees up the !lookup
command for other sheet searches.
TTS Abbreviations Search
To search the TTS abbreviation sheet (https://wazeopedia.waze.com/wiki/USA/Abbreviations_and_acronyms) can be searched with the !abbreviation
or !abbr
command. This is available in all channels/servers and direct message with CommunityBot.
Wazeopedia Search
You can search Wazeopedia (WoP) using the !search
or !w
commands. This will search WoP as if you were doing the search from the searchbox on a WoP page. Due to this search working the same as WoP some results may be confusing - when searching on WoP if you have an exact match it can automatically direct you to that page without providing autocomplete results or presenting a search page, however when run through the bot it can provide several results, some of which may not be very accurate.
Tiles
You can query the last NA and INTL tile update with the command !tiles
.
Profile
You can generate profile links for a given editor name with the !profile
command. An example command is !profile EditorName
. This will return the editor profile, forum profile and wiki profile links. The bot will check if the forum and wiki profiles exist and if they do not it will return No forum profile
and No wiki profile
, respectively.
Autoreplies
An autoreply is a message that the bot will reply with automatically when a certain phrase is said in chat. Autoreplies can be created at the channel, server, or global levels. The syntax is by nature somewhat convoluted due to the features provided. To trigger an autoreply, the keyword is sent preceded by an exclamation mark !
.
Channel and server autoreplies can be set by SM+, and global autoreplies can be set only in the national server by champs.
The base command is !autoreplies
, by itself this will bring up a list of available autoreplies for the area it is used in. To add or remove autoreplies, send the command from the server, and/or channel you want it to apply to. The command is made of four parts; base + action + area + trigger term + autoreply text.
base = !autoreplies
action = add
or remove
area = global
, server
, or channel
trigger term = the keyword that when typed will trigger this response. Do not include the preceding exclamation mark.
autoreply text = the full formatted text that should be return when the trigger term sent.
Here's an example command:
!autoreplies add server testing This is a test.
!autoreplies remove global anothertest This is another test.
Available autoreplies
Below is a list of some of the global autoreplies which have been set.
Trigger | Response Text |
---|---|
!help | Link to this page |
!copyright !sources !externalsources |
Information about using external sources and © content |
!nickname | Instructions to set up a proper nickname on Discord |
!ping !status |
Check if bot is working |
!source | Link to source code for the bot |
!soon | 🔜 parody |
!VEOC | Information about the Virtual Emergency Operations Center (VEOC) and a VEOC server invite |
Keyword Subscriptions
You can subscribe to keywords and the bot will message you whenever one is used in a channel that you're in. The commands are somewhat complicated because of the functionality available. Use your personal chat with CommunityBot to manage these.
Notes
Keywords must be at least 2 characters long. Regular keywords are not case-sensitive but regex keywords are by default (regex special characters such as \W
are respected) - more below.
Base command
The base command to use is !keyword
or !subscription
, or variants of these.
Regular Expressions
Regular expression keywords are supported. To use them, create a keyword as normal but wrap your regex in /
. For example, !keyword add /.*/
. Regex keyword are case sensitive by default. To make the keyword case insensitive end your regex with /i
instead of /
. Ex: /wAzE/
will match with wAzE
but not waze
. /wAzE/i
will match both wAzE
and waze
.
List keywords
Your existing keywords can be listed using !keyword list
.
Add a keyword
To add a keyword, use !keyword add keywordhere
. You can use multiple words, but note that you will only be messaged if the entire phrase you use is a match. To add multiple separate keywords, you need to use the command multiple times in individual messages.
Test a keyword
You can test your keywords by using the !keyword test
command. This can be run in a channel or a direct message with CommunityBot. Ex: !keyword test some text to see if your keyword is triggered
. If any of your keywords are triggered by your test text CommunityBot will alert you as to which keywords were triggered. This is a good way to make sure you do not duplicate keywords, and you don't have to wait for someone to respond with a test message.
Remove a keyword
Remove keywords using !keyword remove keywordhere
. The keyword must exactly match one of your existing keywords or the command will fail.
Ignoring keywords in servers or channels
By default, the bot will message you if a keyword matches in any channel that you're in. You can ignore specific keywords in certain servers or channels with these commands. To find the server or channel ID, see the Getting IDs section below.
List ignored keywords
Your ignored keywords can be listed using !keyword ignore list
.
Ignore a keyword in a server
To ignore a server: !keyword ignore server serverid keywordhere
. For example, you could ignore the keyword "testing" in the national server by using !keyword ignore server 300471946494214146 testing
.
Ignore a keyword in a channel
Ignoring a channel uses the same syntax as ignoring a server, except the word "channel" is used instead of "server": !keyword ignore channel channelid keywordhere
. For example, to ignore the keyword "testing" in the GLR channel on the national server, you would use !keyword ignore channel 300568375900504074 testing
.
Unignore a server or channel
Unignoring a server or channel uses the same syntax as ignoring, but with the word "unignore" instead of "ignore". For example: !keyword unignore server 300471946494214146 testing
.
Mute servers or channels
You can mute all keywords from a given server or channel using these commands.
Mute a server
Mute a server using !keywords mute server serverid
. For example, !keyword mute server 300471946494214146
.
List muted keywords
Your muted keywords can be listed using !keyword mute list
.
Mute a channel
Mute a channel using !keyword mute channel channelid
. For example, !keyword mute channel 300568375900504074
.
Unmute a server or channel
Unmute a server or channel using the same commands as above, except using unmute
instead of mute
.
DND mode
You can temporarily silence keyword alerts using the !dnd
command. Running the command alone (!dnd
) will return the amount of time left on DND mode if it is enabled.
Enable DND
To enable DND mode use the !dnd
command followed by the number of hours you want DND mode enabled. Ex: !dnd 8.5
will enable DND for 8.5 hours.
Disable DND
To disable DND mode use the !dnd disable
or !dnd off
command.
Scripts
The WazeDev group is maintaining a list of community scripts to search in order to find the current version, current active developer, install & forum links. This list can be searched by running the !scripts search term
command. To view the scripts sheet run !scripts
If a script is missing from this sheet and you feel it should be added, contact MapOMatic or JustinS83 to get it added.
Server Leave Alerts
To have CommunityBot notify a channel when a user leaves the server use the !serverleave
command. Running !serverleave
without any other parameters will return if the server has a channel designated. Only one channel can be designated per server.
This is restricted to administrators of the server.
Add
To designate a channel to be used for server leave messages use the !serverleave add
command and specify the channel id. Example: !serverleave add 299563059695976451
. You can also directly reference the channel - ex: !serverleave add #general
.
To modify the channel used, run the !serverleave add
command with the new channel number.
Remove
To remove the channel designation run the !serverleave remove
in any channel on the server.
Permalink Extraction
To remove permalinks from a message, and remove the layer information, use the !pl
command followed by the text that includes the permalink(s). If multiple permalinks are found they will all be extracted, layer information stripped, and returned in a message separated by the pipe (|) character. This command works well in a direct message to CommunityBot to reduce unneeded public messages.
Announce
Champs are able to use the !announce
command to post a message to all US servers that have opted to create an #announcements channel. Ex: !announce Text to be shown in all announce channels
. This will be used for posting information that needs to be spread nationwide and for bot update information.
Server join messages
To have CommunityBot send a direct message to an editor that joins a server use the !serverjoin
command. This can be used to welcome them to the server/region and send them some basic information for the region or direct them toward important channels on the server.
Add
To add a join message to a server use the !serverjoin add
command. Ex: !serverjoin add Welcome to the server!
. This command must be run on the server that you wish to add the message to.
Remove
To remove a join message from a server use the !serverjoin remove
command.
Note: This command is restricted to champs on the US servers, and admin on the Global and Waze Scripts servers.
Fun
Some fun commands to try that are not related to discord/Waze.
xkcd
Run the !xkcd
command to return a random xkcd comic. To search for a specific comic number run !xkcd comicNumber
, ex: !xkcd 149
.
Diceroll
To roll a die (or multiple dice) use the !diceroll
command. If !diceroll
is used without any parameters it will roll a normal 6 sided die. You can specify the number of dice to roll and the number of sides on each die. Example: !diceroll 5d10
will roll 5 dice, each with 10 sides. Multiple entries can be specified: !diceroll 4d8 5d5 8d15
and results for each will be shown like 4d8 5d5 8d15 = (3+3+2+4)+ (1+1+1+2+3)+ (12+6+14+13+4+14+6+4) = 93
.
Slap
You can slap someone (or anything) with the /slap
command. Example: /slap CommunityBot
.
Dad jokes
You love to hate them. !dadjoke
.
Facts
You can learn something new every day.
Dog facts
!dogfact
Number facts
!numberfact
Getting IDs
Several bot commands use either channel or server IDs to identify those channels or servers. Getting these IDs is relatively straightforward. Navigate to the channel or server that you want the ID for, and look at the URL of the page. For example, the #michigan channel in the GLR server has this URL:
https://discordapp.com/channels/299563059695976451/299567520652853248
In all URLs, the first large number is the server ID and the second number is the channel ID. In this example, the server ID is 299563059695976451
, and the channel ID is 299567520652853248
.
Alternatively, you can use the command !whereami
and the bot will give you these IDs.
Note that the server and channel IDs may be the same!
Technical
Adding CommunityBot
- If needed: create Bot role (CM < Bot < Champ)
- Use this link to add CommunityBot to new server
- Right click on CommunityBot, assign Bot role
Discord
UUID: | communitybot#7894
|
Internal ID: | 359544570578731008
|
Implementation
CommunityBot is a fork of vaindil's open source project, wazebot-discord.
Language: | C# (pronounced "C-Sharp") |
Runtime Environment: | .NET Core |
Source Code: | GitLab |
Software License: | GNU General Public License version 3 (aka "GPLv3") |
Installation
There are detailed installation instructions for CommunityBot.
Build/Run
There are detailed build/run instructions for CommunityBot.