Raidbot Rewrite

General Overview

The purpose of Raidbot is to assist in Pokemon GO trainers efforts to complete raids.

Use Cases

  • Coordinating raids for a local area
  • Coordinating local meetups for events such as Community Day
  • Coordinating EX Raids so people have the maximum chances at catching Mewtwo

Features

Raid Planning

The main feature of Raidbot will be assisting users in organizing raids. This is done through chats on Discord, and information on raids will be available through a web interface. This has multiple parts to it, mainly consisting of the !create, !edit, !join, !info, !done, and !cancel commands. The function of each will be explained below. There are also additional commands that fall under this category, such as !delete, but they are not needed for general use of the bot.

!create

This command initiates the creation of a raid RSVP. It asks for the boss, meet up time, a comment, and a channel to post the RSVP in. The comment is required, however it can be set to none or no if the creating user wishes. Comments are required because past use has shown that if comments are required, more information is given on the raid, leading to a greater raid success rate.

edit

Lets you edit any information that was put in a raid. This command can only be run by the raid creator and moderators.

!join

Allows a user to join a raid. It also allows the user to add other users to a raid, by adding the number of extra people and their teams. For example, if I wanted to join raid #23, with two Mystic Trainers, one Valor, and three Instinct, I would run the command !join 23 2m 1v 3i.

info

Returns all information on a raid. This command takes one argument, raid ID, and returns the basic data about the raid, along with the attendee list. !who will become an alias of this command.

!done

Marks a raid as done and freezes RSVPs. Once a raid is marked as done, you cannot add or remove any RSVPs from it. This is done so that if needed in the future, people can see who was at a raid. This command can only be run by the raid creator and moderators.

!cancel

Does much of the same thing as !done, but cancels the raid instead. This should be used if for some reason a raid was not able to be done for some reason, such as weather.

Trainer Lookup

The Silph Road provides an API that allows us to fetch Trainer information. We will use this API to allow users to query information on specific trainers with the !trainerinfo command.

Pokemon and Raid Boss Stats

Users will be able to fetch information on raid bosses with the use of the !boss command, and information on any of the Pokemon available in the game with the !pokemon command, aliased to !poke and !p

Moderation Help

In the event you don’t have another moderation bot on your server, we will allow you to use basic moderation commands with Raidbot. This includes bulk deletes, banning and kicking users, as well as features used for moderation Raidbot itself, such as the ability to specify what channels RSVPs can be posted in, preventing a mess of channel permissions.

GDPR Compliance

GDPR comes into effect on the 25 of May, 2018. For those of you who are not familiar with the GDPR, it is a set of laws in the European Union that governs data collection. It is geared towards Consumer Protection, and more information on it can be found on it’s website, here. Even though our service is not based in the EU, we have users that live there, so the regulations still apply to us. It’s important that we are ready for it. Ideally I will have the rewrite done by then, but if it looks like I will not I should make some quick changes to the current version of the bot. General information on the GDPR in relation to developers can be found here.

A big part of the GDPR being the need for consent before user data collection, we need to make sure that we get consent from users before they can use the bot. The current flow I have planned out is this:

  1. All commands excepting a small selection require the one time use of the !accept command to signify acceptance to data collection and general Terms of Service.
  2. When a user runs the !accept command, present them with a line by line acceptance that they need to agree too, in replacement to the ‘checkbox’ approach you may have on a typical website.
  3. In accordance to the GDPR, we need to ask the user for their age. This age will not be collected, only whether they are the of 16 or above. If a user is not 16, require that they receive parental consent, in the form of a parental email. Whether this email will be used for any purpose is still to be determined.
  4. Once a user has completed the acceptance process they are free to use the bot as they wish, in adherence to the ToS.

Commands that are exempt will be as follows: !mydata, !help, and !info.

Data Portability

All data on a user must be available to export, both in a human readable and machine readable fashion. To get around the issues with Discord message limits and to prevent storage of data on Discord’s servers, part of the web GUI will be used for this. These pages will require authentication with Discord OAuth, and will only be visible to the users themselves. To get a link to this page, all a user has to do is run the !mydata command, and a link will be sent to them, either in a DM or in the channel the command was run, depending on how we set the web interface up. All data that we have on a user is required to be shown in these reports, this includes, but is not limited to:

  • All data that may be stored in the users table, such as User ID, Terms of Service acceptance, age, and username/discriminator
  • All raids that the user has RSVPed to, along with the team they join as and how many other people where at the raid.
  • All raids that the user has created, along with the Attendees of those raids.
  • Any other data that we may have collected on the user.

Data Removal

A user must be allowed to remove all data that we may have stored on them. I want to automate this process as much as possible to all users to handle their data as it is, their data. A user will be able to remove all data we have on them with !forgetme command, which will prompt for confirmation before deleting any data. For data which is tied to a user account, such as raids, their ID will be replaced with a generic User Removed note.

Restriction of Processing

Users should be able to mark their data in our database as restricted, meaning we will not do any processing on them that we do not already need to do for the functions of the bot. In general, for the purposes of this bot, it will not have a difference from typical non-restricted accounts as we do not do and processing that is non essential to the bot. User data can be marked as restricted with the !restrictme command.

Web Interface

One of the features I am most excited for, this will allow users to share a raid with Trainers not on Discord. This will include all the data that can be accessible on Discord, such as raid details and RSVP lists. Optionally, an invite can be configured so that users can join the Discord server to join the raid. The invite is configurable, so you can track the number of people joining from the web.

User Data

As mentioned above in Data Portability, users will also be able to access dumps of all data we have on them via the web interface.

Other Uses

Other uses of the web interface may include bot status, user and guild counts, and guild setting configuration.

Disclaimer

This article is still in development, and will be updated regularly with new information on how the bot will function.