Jump to content

Global reminder bot/Technical details

From Meta, a Wikimedia project coordination wiki

This page should not be translated.

What does this bot do?

[edit]

As the name says, this bot looks for any user whose temporary rights are due to expire in a week's time or less and sends a reminder to their user talk page on that wiki. The idea is to give them time to renew their rights, to prevent a case where they run into issues because they forgot to renew their rights. It is designed to be easy to configure and translate (see Global reminder bot/Proposal for details).

How does it work?

[edit]
  1. The bot pulls up Global reminder bot/global to get the list of wikis that have been manually looked at and approved.
  2. For each wiki, the bot runs a database query to check for which users their temporary rights are due to expire.
  3. Then, it checks for exclusion criteria:
    1. whether the user is in the exclusion set at Global reminder bot/Exclusion (if so, it does nothing, as these are the users that do not want the bot to remind them).
    2. Similarly, it does nothing if the right due to expire is in the exclusion set in Global reminder bot/global or in the local configuration file if the wiki does have one.
    3. It also checks if the user was already reminded by pulling Global reminder bot/database.
  4. It then pulls the title and the respective message (or default) and sends the message to the user.
  5. After that (if successful), it writes the user ID, name and right that was due to expire and sends it to Global reminder bot/database, and then repeats steps 3 to 5 for every user in that wiki
  6. Once that's done, the bot then finds out which wikis are "automatically approved" as they do not appear to have a bot policy or require approval. To do that, it first gets the list of wikis (call it T) that are not in Special:WikiSet/14 (these are the wikis that do not allow global bots). For all those wikis, it then checks wikidata:Q4615128 and wikidata:Q8639023 and deems wikis in either/both of these two pages as wikis that require a manual check/application (call it S)
  7. Finally, it repeats step 2 - 5 for each wiki in T \ S (i.e, wikis that allow global bots and do not appear to require explicit approval).

Current limitations

[edit]
  • The bot does not support custom time zones and will only return the expiry date in UTC. The signature is unaffected, however.
  • Redirects (both interwiki and local) are not supported, and the bot will simply post the message in the talk page as usual.
  • Other than Global reminder bot/Exclusion, the bot does not exclude anyone; in particular, it is not exclusion-compliant.
  • The bot handles each right separately, so a user with two rights due to expire at around the same time will get two messages.
  • mw:Flow is not supported and the bot will skip such users.
  • The bot will not remind anyone whose rights are due to expire in less than 25 hours and wasn't already reminded. This has been done to reduce the chances of users being reminded of rights that they've themselves assigned or to an alternate account of theirs (eg stewards when handling a cross-wiki CU/oversight case. The eventual plan is to set this in such a way that the bot does not remind anyone whose rights were originally assigned for 7 days or less, as it's expected that such users know that their rights are due to expire. The problem is that due to database limitations, doing this is technically convoluted, hence this workaround for now.