Page semi-protected

Wikipedia:Bots/Requests for approval

From Wikipedia, the free encyclopedia
Jump to navigation Jump to search

BAG member instructions

If you want to run a bot on the English Wikipedia, you must first get it approved. To do so, follow the instructions below to add a request. If you are not familiar with programming it may be a good idea to ask someone else to run a bot for you, rather than running your own.

New to BRFA? Read these primers!
 Instructions for bot operators

Current requests for approval

Qbugbot 5

Operator: Edibobb (talk · contribs · SUL · edit count · logs · page moves · block log · rights log · ANI search)

Time filed: 20:29, Saturday, March 14, 2020 (UTC)

Function overview: Correct 3 errors and add diptera project to talk pages, in pages created by qbugbot.

Automatic, Supervised, or Manual: Automatic

Programming language(s): vb.net

Source code available: yes, will be updated on approval.

Links to relevant discussions (where appropriate): Maintenance tasks, should not be controversial.

Edit period(s): about 10 hours total over 1 to 7 days.

Estimated number of pages affected: around 2600 articles and 660 talk pages.

Namespace(s): Mainspace and Talk

Exclusion compliant (Yes/No): yes

Function details: Four corrections in pages created by qbugbot:

  • Improper link to common names (500+ occurrences, all but 15 in Tachinidae genera).
  • Remove invalid PMID and PMC fields in one reference (1100+ occurrences).
  • Remove a "further reading" reference with some invalid fields (800+ occurrences).
  • Change "WikiProject Insects" to "WikiProject Diptera" for flies, about 660 occurrences.

Discussion

DannyS712 bot 69

Operator: DannyS712 (talk · contribs · SUL · edit count · logs · page moves · block log · rights log · ANI search)

Time filed: 19:27, Thursday, March 12, 2020 (UTC)

Automatic, Supervised, or Manual: automatic

Programming language(s): Javascript

Source code available: Not written yet

Function overview: Remove do not archive tags from closed discussions at Wikipedia:Dispute resolution noticeboard

Links to relevant discussions (where appropriate): Wikipedia talk:Dispute resolution noticeboard/Archive 31#Bot proposal

Edit period(s): Periodically

Estimated number of pages affected: 1

Exclusion compliant (Yes/No): No

Already has a bot flag (Yes/No): Yes

Function details: Remove do not archive tags from closed discussions, since this is sometimes forgotten by volunteers at the noticeboard. Simply look for ({{DR case status\|(?:reject|resolve(?:d)?|fail(?:ed)?|close(?:d)?)}})\n<!-- \[\[User:DoNotArchiveUntil.*?-->{{User:ClueBot III\/DoNotArchiveUntil\|\d+}}<!--.*?--> and replace with $1.

Discussion

Is there any need to remove the template from archive pages? On the surface this seems like editing for the sake of it. Primefac (talk) 19:39, 15 March 2020 (UTC)

@Primefac: this is only removing the template from Wikipedia:Dispute resolution noticeboard, so that discussions can be archived DannyS712 (talk) 20:21, 15 March 2020 (UTC)

WikiCleanerBot 12

Operator: NicoV (talk · contribs · SUL · edit count · logs · page moves · block log · rights log · ANI search)

Time filed: 21:24, Tuesday, March 10, 2020 (UTC)

Function overview: Do edit for fixing CW Error #548 (Punctuation inside link).

Automatic, Supervised, or Manual: Automatic

Programming language(s): Java (WPCleaner)

Source code available: On GitHub (especially algorithm 548)

Links to relevant discussions (where appropriate):

Edit period(s): Twice a month

Estimated number of pages affected: Unknown for the moment: I will generate a dump analysis for error #548 to see how many pages could be concerned.

Namespace(s): Main

Exclusion compliant (Yes/No): Yes

Function details: The bot will simply move punctuation (comma, semi-colon or colon) at the end of a link (internal link, external link or interwiki link) after the link. The dot is not included as it would create many false positives (abbreviations). If the link text contains only the punctuation, it will be ignored also to be dealt with manually. Special cases are also handled for the semi-colon : things like &nbsp; or &#x5D; will also be ignored.

My bot is currently running the same task on frwiki (around 6000 pages, only for internal links in the first pass).

Discussion

One request and one question; first, yes please run the numbers and see how many pages are affected. Second, I notice that in cases like fr:14e cérémonie des Oscars the bot removes the duplicate/second link; are those cases being ignored here or is there logic to deal with that? Primefac (talk) 19:46, 15 March 2020 (UTC)

Hello Primefac.
Ok, I will generate the list of pages in the next dump analysis (also for Wikipedia:Bots/Requests for approval/WikiCleanerBot 11), and come back here when it's available.
For fr:14e cérémonie des Oscars, this one was done manually by me, not automatically: as you can see on the update of the list on frwiki, such cases were not fixed by the automatic run, and they are kept for manual fixing. I will probably see in a next request for approval to handle at least part of such situations (I'm starting to work on links broken in several consecutive links, see Projet:Correction syntaxique/Analyse 549).
--NicoV (Talk on frwiki) 10:14, 16 March 2020 (UTC)

WikiCleanerBot 11

Operator: NicoV (talk · contribs · SUL · edit count · logs · page moves · block log · rights log · ANI search)

Time filed: 21:17, Tuesday, March 10, 2020 (UTC)

Function overview: Do edit for fixing CW Error #547 (Empty list item).

Automatic, Supervised, or Manual: Automatic

Programming language(s): Java (WPCleaner)

Source code available: On GitHub (especially algorithm 547)

Links to relevant discussions (where appropriate):

Edit period(s): Twice a month

Estimated number of pages affected: Unknown for the moment: I will generate a dump analysis for error #547 to see how many pages could be concerned. As this fix will probably be considered as cosmetic, it will only be performed with other tasks (non-cosmetic edits), so only a small portions of the pages listed will be modified.

Namespace(s): Main

Exclusion compliant (Yes/No): Yes

Function details: The bot will simply remove empty list items (like *, :...). If the line is followed by an empty line or another list item, or preceded by an empty line, one carriage return will be removed too. Currently, modifications will be excluded in <nowiki>, <score>, <source>, <syntaxhighlight> and in images.

As it will be cosmetics edits, it will be performed only with other non-cosmetic edits. My bot has already run the same task on frwiki (around 8000 pages), but there was no constraints on cosmetic edits there, so each page was fixed.

As empty list items may be used to make a separation in wikitext between 2 list items, without impact on final rendering, my bot won't remove empty list items which are between other list items.

Discussion

Please provide a general idea of how many pages are affected. Primefac (talk) 19:49, 15 March 2020 (UTC)

DannyS712 bot 68

Operator: DannyS712 (talk · contribs · SUL · edit count · logs · page moves · block log · rights log · ANI search)

Time filed: 22:45, Sunday, February 23, 2020 (UTC)

Automatic, Supervised, or Manual: automatic

Programming language(s): Javascript

Source code available: Haven't written yet

Function overview: Allows users to schedule reminders for themselves in a userspace json page, and post those reminders to a user's talk page

Links to relevant discussions (where appropriate):

Edit period(s): Daily

Estimated number of pages affected: User talk pages of users that opt in

Exclusion compliant (Yes/No): No

Already has a bot flag (Yes/No): No

Function details:

I figured out a sane way to allow users to schedule reminders and have them processed. I haven't done any coding yet, but wanted to open this for discussion.

  • User, via script (to be written) adds an entry to User:Example/reminders.json with the day for the reminder, and the text to include
  • User page is in a tracking category or transcluded a specific template to track which users are using the service
  • Each day, bot retrieves all user pages in the category/with the template, converts "User:Example" with "User:Example/reminders.json", retrieves the json page, and parses to see if any reminders where scheduled for that day
  • If any were, post to "User talk:Example"

Reminders can only be scheduled by the owner (or an admin editing the owners json page, but why would anyone?)

  • User is responsible for removing old reminders from their /reminders.json page, but the bot only checks to see if there are reminders for "today" (UTC at noon) and so doesn't care if there are old ones left


Discussion

Is there a specific reason for using .json? I know that these are (along with JS and CSS) the only pages that are protected in user-and-some-privileged-groups mode, but I wonder if there are other ways to accomplish this. I know there are tasks at Phabricator to create a feature, but I am not sure if programming that is better or worse than programming a bot for the meantime. Jo-Jo Eumerus (talk) 23:05, 23 February 2020 (UTC)

@Jo-Jo Eumerus: so that other people don't edit them, and to make it easier for the bot to parse DannyS712 (talk) 23:08, 23 February 2020 (UTC)

I see you didn't fill anything into the "Links to relevant discussion" section. A quick search turned up several pages, of which Wikipedia:Bots/Requests for approval/RemindMeBot seems the most comprehensive. As mentioned there, it might be more functional all around to tie this into Echo somehow, storing pending reminders in a properly indexed database table and so on. Anomie⚔ 14:20, 24 February 2020 (UTC)

@Anomie: sure, but phab:T156808 hasn't had any progress. If it is implemented I'll stop the bot DannyS712 (talk) 18:35, 25 February 2020 (UTC)
  • I am inclined to approve this for a trial, but am not sure what criteria would be best for its completion. @DannyS712: do you have any preference/suggestions? @Anomie:, do you have any objections seeing as how phab:T156808 hasn't had any traction and if this task is retired once the phab ticket completed/implemented (could take years before someone takes it up)? --TheSandDoctor Talk 20:50, 7 March 2020 (UTC)
    @TheSandDoctor: maybe just a proof of concept that it works? I'll use DannyS712 and DannyS712 test. Haven't written the code yet... DannyS712 (talk) 21:08, 7 March 2020 (UTC)
    @TheSandDoctor: Don't let me hold things up. I think it'd be better if it could be integrated into Echo, and from what I've seen DannyS712 could probably write that code (given code review from the appropriate WMF team), but if they'd rather do it as a bot I won't stand in the way. Anomie⚔ 21:48, 7 March 2020 (UTC)
  • Needs wider discussion. I was going to send this to trial based on the above discussion, but Danny does not require bot approval to use this bot (or its features) in his own user space. In other words, if no one else would actually use this, then there is no point in approving this task in the first place. I think a post at the Village Pump or other semi-centralized discussion, even to see if there is an interest, would be preferred before sending this to trial. Primefac (talk) 19:57, 15 March 2020 (UTC)

PearBOT 7

Operator: Trialpears (talk · contribs · SUL · edit count · logs · page moves · block log · rights log · ANI search)

Time filed: 00:22, Tuesday, January 7, 2020 (UTC)

Automatic, Supervised, or Manual: automatic

Programming language(s): Python

Source code available: Will add tomorrow

Function overview: Remove red links to sister projects using {{Sister project}}.

Links to relevant discussions (where appropriate): Wikipedia:Bot requests#Remove sister project templates with no target

Edit period(s): One time run

Estimated number of pages affected: I really don't know. Somewhere between 500 and 10000 maybe?

Exclusion compliant (Yes/No): Yes

Already has a bot flag (Yes/No): Yes

Function details: Since many of these templates link to a search using the articles page name as the query only links where there are zero search results.

Discussion

Hmm. Sometimes the lack of a namespace prefix can be the actual problem; we often link from Wikipedia articles to the corresponding Commons category. Jo-Jo Eumerus (talk) 09:19, 7 January 2020 (UTC)
Jo-Jo Eumerus, commons search results display results from several namespaces (gallery, file, category, creator, institution, help) by default. I will do the search in all of them just as a user following the link would. ‑‑Trialpears (talk) 07:16, 10 January 2020 (UTC)
Thanks for taking this on. My gut guess as the requester is that the "Estimated number of pages affected" would be much higher. I run into the problem on species articles, but I suspect the problem is Wikipedia wide, and that every article with a sister project template should be checked. I'd guess that's into the millions. SchreiberBike | ⌨  04:01, 10 January 2020 (UTC)
SchreiberBike, I think this issue would affect animal/plant species disproportionately since the articles often contain a commons/wikispecies link that is copied by other editors even when it's not applicable. It would also be more common that it's automatically removable for species since the title can't show up on any user facing page on all of commons (or other project) to have zero search results which should be more common for species with their latin names. I may very well be wrong though. I'll run it without saving on a few pages to get an actual estimate this weekend. ‑‑Trialpears (talk) 07:29, 10 January 2020 (UTC)
  • @Trialpears: Pi bot does similar things with commons categories, and is also written in Python, so there may be code that you can adapt from that to handle these cases. In particular, I would recommend using Wikidata interwiki links to replace bad links with good ones where possible. There's also a discussion with @Hike395: on my talk page which might be relevant - having some code in the templates along the lines of that used in {{Commons category}}, plus similar tracking categories to those at Category:Commons category Wikidata tracking categories, would help with manually checking cases that the bot can't handle. Thanks. Mike Peel (talk) 09:25, 18 January 2020 (UTC)
@Trialpears and SchreiberBike: Hi, Trial. How were you planning on defining "red links"? I've been gathering data about commons links, and the concept is rather complex. You can see the wikidata dump of commons links for en articles that contain {{commons and category}} or {{commons and category-inline}} with missing arguments, here and here. Out of 924 such articles, 51 (5.5%) do not have any commons links recorded in wikidata. The Commons search quality is variable:
Were you planning on testing for an empty search result? Otherwise, I'm not sure how a bot can tell the difference between a useful search result and junk. There's also the question of timing --- it could be that a search result is empty or junk now, but will return a good result in the future. — hike395 (talk) 00:33, 19 January 2020 (UTC)
Hike395, my plan was defining it very strictly only removing if there are no hits in any user facing namespaces which means only Anjum Shahzad would be removed of the ones above. While it is possible there will be a good result in the future there has repeatedly been a consensus that redlinks in navigational templates such as this one should be removed if they are not very likely to be created shortly as documented at WP:EXISTING. It will take some time for me to look into Mike Peel's code but it looks very promising and seems to be more efficient then my current implementation. ‑‑Trialpears (talk) 17:36, 19 January 2020 (UTC)
IIUC, you are planning on running Commons searches like Commons:Special:Search/Anjum Shahzad in your bot, and then remove en template if the search results contain no Files, galleries, or Categories. That seems good. Mike Peel's bot code could be helpful --- it could be faster to look up entities in wikidata, filtering out the 95% that have entries in P373, P935, sitelinks, or P910 sitelinks. Then you would only run the search on ~5% of the boxes. — hike395 (talk) 18:58, 19 January 2020 (UTC)
  • @Trialpears: Do you have any examples of what an edit from this task would look like? --TheSandDoctor Talk 21:07, 7 March 2020 (UTC)
    A user has requested the attention of the operator. Once the operator has seen this message and replied, please deactivate this tag. (user notified) No response to the above question. Primefac (talk) 20:05, 15 March 2020 (UTC)
    Sorry, I've had a lot going on recently, should be back to normal tomorrow. Here are diffs two diffs of edits which would have been done by the bot. The criteria is that the fallback search gives no results. Not only links using these two templates will be removed but any wrappers of {{sister project}}. Very sorry for the wait the last three months have been so much more stressful then expected but it will probably not be as bad in the future and this bot is now my top priority together with my FL. ‑‑Trialpears (talk) 15:34, 16 March 2020 (UTC)

ST47ProxyBot

Operator: ST47 (talk · contribs · SUL · edit count · logs · page moves · block log · rights log · ANI search)

Time filed: 07:33, Sunday, December 1, 2019 (UTC)

Function overview: Block IP addresses belonging to open proxies, public VPN services, and web hosts.

Automatic, Supervised, or Manual: Automatic

Programming language(s): Combination of Python and Perl

Source code available: No, to protect sources and testing methods. Mostly uses pywikibot to interact with the wiki.

Links to relevant discussions (where appropriate): WP:NOP authorizes open proxies to be blocked, Wikipedia:Bots/Requests for approval/ProcseeBot demonstrates that a bot may be used for this task.

Edit period(s): Continuously

Estimated number of pages affected: Initially a higher rate due to a large number of not-currently-blocked proxies, once it reaches steady state, probably about 100 logged actions per day.

Namespace(s): None

Exclusion compliant (Yes/No): No, not applicable

Adminbot (Yes/No): Yes

Function details: WP:NOP states that open proxies may be blocked at any time. Open proxies allow editors to evade blocks, avoid detection, or appear to be multiple users when they were actually only one person. Waiting until these proxies are abused is not practical, as multiple easily-searchable websites advertise thousands of such proxies. The number of blocks to be made is high enough that automation is required.

There is already a bot approved for this task. However, it is beneficial to have multiple independent tools. There are a large number of data sources out there, and I've already been able to find a number of proxies that I can access, but which haven't been blocked. I'm sure others can find things that I can't. Since this involves trying to test the proxies, operators in different geographical areas or homed to different ISPs may have different views on the internet, one ISP may "blackhole" a network that hosts a lot of malicious proxies while another ISP may not, or one bot might have an outage of some sort while another is still running normally.

This bot makes three types of blocks:

  1. Open (HTTP/HTTPS/SOCKS) proxies, tested by accessing Wikipedia through the proxy
  2. Open VPN servers, verified by at least two data sources
  3. IP ranges used for web hosting, cloud services, etc, manually reviewed and curated

In the first two cases, it uses open sources to build a list of IP addresses, which it scans through. For proxy types that can be automatically tested, the bot attempts to access the Userinfo API. VPN testing cannot easily be automated, so instead the bot performs checks against several independent sources to determine if the IP address is a VPN node or not. The original proxy list is the first source, and the bot requires positive responses from at least two more sources before blocking. Once the bot has either successfully accessed API:Userinfo through the proxy or verified the proxy against enough independent data sources, it adds the IP to a list to be blocked.

The block duration varies based on the number of previous proxy blocks of that IP address. Currently, the first block is set for 14 days, ramping up to 2 years after enough blocks. The block is set to account-creation-blocked with anon-only unselected. I.e., this is a hardblock. The block message uses {{blocked proxy}} with a comment providing enough information for me to investigate why the IP was blocked in case there is any question. If the IP is already blocked, the bot skips it. This includes if it is already subject to a local rangeblock. The bot does not check global blocks. If the proxy is an IPv6 IP, the bot blocks the /64 range.

In the case of web hosting IP ranges, these are ranges that I identify through whois data and other sources as belonging to web hosting or other similar types of companies. I generally find an address that is being abused, usually by a spambot, and then investigate and block the entire address space assigned to web hosting at that company. In this case, I manually review the list of ranges to be blocked, and the bot blocks them for a fixed time period, generally using the {{colocationwebhost}} template, and a description of the IP ownership in the block comment. This task will never be fully automated, as it is based on me finding and deciding to block a given set of IP ranges. However, I'm bundling it with this bot request because it also entails making a large number of blocks at once.

Further, this bot may modify blocks that it initially issued, either extending them if they are near expiration and the proxy is still active, or removing them if the proxy is confirmed to be inactive. (The removal would only be after several checks in a row, over a period of time, confirm that the proxy isn't active, and this isn't currently implemented.) ST47 (talk) 07:33, 1 December 2019 (UTC)


Discussion

To which degree does this task overlap with that of User:ProcseeBot? Also, summoning their botop slakr here. Jo-Jo Eumerus (talk) 11:35, 1 December 2019 (UTC)
  • @Jo-Jo Eumerus: Same objective, but I am finding a large number of proxies that are not currently blocked, and that need to be. Possibly because I'm using different data sources or different testing methods. ST47 (talk) 18:32, 1 December 2019 (UTC)
What mechanism do you have in place to prevent wheel warring, especially with human admins? — xaosflux Talk 14:17, 1 December 2019 (UTC)
  • @Xaosflux: I will add a check that it will not block any IP address that has ever been unblocked by a human admin. Instead it will log those to a file or to userspace. ST47 (talk) 18:32, 1 December 2019 (UTC)
Does this bot support IPv6? SQLQuery me! 16:12, 1 December 2019 (UTC)
Also, as far as the major compute services (amazon, azure, google) - how are you identifying these? SQLQuery me! 16:14, 1 December 2019 (UTC)
  • @SQL: It does support IPv6, and blocks the /64 of detected IPv6 proxies. There is no special handling for the major compute services. Most of them are already blocked, if a blocked IP (including via a range block) shows up on one of the proxy lists, I currently don't even bother testing it, no point since it's already blocked. (For the ancillary task of blocking web hosting types of IP ranges, that would be through manual review of the whois information. Basically, if I CU a spambot and find that it's on some minor cloud services company's IP range, I run it through ISP rangefinder, review the netblock names, and block everything that looks webhost-y. The only automation for those is to save me from clicking the block button 100 times.) ST47 (talk) 18:32, 1 December 2019 (UTC)
    ST47, It is often not the case that the major providers are already blocked. Amazon, and azure get new ranges all the time, see: User:SQL/Non-blocked compute hosts. I've always used [1] to detect azure, and [2] to detect amazon. Google is a bit more complicated. SQLQuery me! 18:39, 1 December 2019 (UTC)
@SQL: What would you suggest doing with this information? Refrain from blocking proxy IPs within that range, or block the entire range? ST47 (talk) 19:14, 1 December 2019 (UTC)
ST47, I normally completely block those ranges by hand, It can be a bit tedious / tiresome. They're webhosts, and very commonly used by spammers / UPE. SQLQuery me! 21:02, 1 December 2019 (UTC)
@SQL: Right, I guess my point is that if that range isn't blocked yet, it's still good to directly block any proxies within that range. (Hopefully, that range won't be unblocked for more than a couple of days, and once the range does get blocked, the bots will stop scanning it for proxies, and the short initial block will eventually expire, leaving the long-term rangeblock.) Improving the automation around detecting (and hopefully eventually blocking and unblocking) hosting ranges is important, but isn't this bot request's objective. ST47 (talk) 21:26, 1 December 2019 (UTC)
Fair enough, I thought that this would fall under point 3, IP ranges used for web hosting, cloud services, etc, manually reviewed and curated. SQLQuery me! 22:10, 1 December 2019 (UTC)
That's intended to cover cases when I checkuser a spambot, find some huge webhosting range, run it through ISP rangefinder and decide to block the whole darn thing. Or for another example, based on this experimental product, I found these guys. There are over 1,000 individually blocked proxy IPs in that AS. Some of the ranges in ISP Rangefinder I wasn't sure about, and left unblocked. But still, the 81 ranges that I did block, I think should be done with a bot account - it's assisted rather than automatic, but doing it with my normal account just floods my block log. ST47 (talk) 22:35, 1 December 2019 (UTC)
  • What authentication mechanism do you plan to use for this bot? Do you plan to secure the account with 2FA? — xaosflux Talk 18:19, 1 December 2019 (UTC)
    • @Xaosflux: BotPasswords with only the necessary permissions granted, and obviously a strong unique password on the main account. I don't currently use the beta 2FA extension, preferring instead to use strong random passwords which are only used for a single account on a single website. ST47 (talk) 18:32, 1 December 2019 (UTC)
  • How are you going to avoid wheeling with User:ProcseeBot which it appears uses different block lengths than your proposal. We really don't need that bot coming around and blocking for one period, then you coming around and blocking for a different period. — xaosflux Talk 18:41, 1 December 2019 (UTC)
    • @Xaosflux: I don't really see what would be wheeling about that. If an IP is already blocked, neither this bot not ProcseeBot would change the block duration. If an IP isn't currently blocked, then whichever bot or human admin gets around to it first would choose a block duration. ST47 (talk) 19:05, 1 December 2019 (UTC)
      • @ST47: ok so if the other bot thinks a one year block is fine, your bot isn't going to go and change it to a 2 year? — xaosflux Talk 20:08, 1 December 2019 (UTC)
        • @Xaosflux: That is absolutely correct. If an IP is blocked, either directly or via a range block, this bot does not modify the block settings at all. ST47 (talk) 20:14, 1 December 2019 (UTC)
  • {{BAGAssistanceNeeded}} I know we like to leave these open for a while for comment, but there hasn't been any action in a while. It has already been advertised in several places including AN. Is a trial possible? ST47 (talk) 05:28, 3 January 2020 (UTC)
    @ST47: please build out a userpage at User:ST47ProxyBot that clearly explains what this bot will do, and what anyone who is blocked by it should do if they have issues with their block. — xaosflux Talk 15:15, 3 January 2020 (UTC)
    @Xaosflux: done. ST47 (talk) 20:22, 4 January 2020 (UTC)
  • WP:NOP is a clear justification for blocking open proxies, but what is the policy that allows for indescriminate blocking of VPNs (especially when the block is based on hearsay from unnamed third-party sources) or indescriminate blocking of webhosts? How often are these third-party VPN lists updated, and how quickly are IP addresses removed from those lists when they are no longer hosting open VPNs? Is your bot going to be regularly checking the open proxies, VPNs, and webhosts and unblocking them as soon as they are no longer open? --Ahecht (TALK
    PAGE
    ) 15:59, 5 February 2020 (UTC)
    If my understanding is correct, open VPNs can and do work like open proxies insofar as everybody can access and use them without being detectable. Jo-Jo Eumerus (talk) 16:09, 5 February 2020 (UTC)
    The difference is that the bot actually tests open proxies, but does not test VPNs. IP addresses can and do change hands, and many of these lists are incorrect (just see Pppery's SPI case for an example of an editor being caught up in this). --Ahecht (TALK
    PAGE
    ) 22:06, 26 February 2020 (UTC)
    By the time an IP is ready to be blocked, I am confident that there is a VPN service, but I'm not able to test whether can use it to access Wikipedia. (Proxy list + nmap service fingerprint seems to be the best way to do so, I was using a couple of APIs but there are issues with rate limits.) The block durations are the main mechanism used to limit how long an IP address remains blocked after the proxy or VPN service is removed. In order to get a really long block, an IP needs to have already been an open proxy for a really long time. Automatic unblocking is not in scope for this request. This bot approval would not affect the SPI case you mentioned, which appears to have been related to a commercial VPN service which was showing up in WHOIS data. WHOIS data is not relevant to this request, and this request does not target commercial VPN services, which I believe we already have well in hand. ST47 (talk) 07:00, 28 February 2020 (UTC)

Bots in a trial period

Cewbot 4

Operator: Kanashimi (talk · contribs · SUL · edit count · logs · page moves · block log · rights log · ANI search)

Time filed: 11:29, Wednesday, February 26, 2020 (UTC)

Function overview: To inform of the article's PROD eligibility

Automatic, Supervised, or Manual: Automatic

Programming language(s): wikiapi on GitHub

Source code available: 20200206.reminded expired AfD.js on GitHub

Links to relevant discussions (where appropriate): Wikipedia:Bot_requests#A heads up for AfD closers re: PROD eligibility when approaching NOQUORUM

Edit period(s): daily

Estimated number of pages affected: ~20/day

Namespace(s): Wikipedia

Exclusion compliant (Yes/No): Yes

Function details: Get infomations from previous PRODs, previous AfD discussions, previous undeletions, and current redirect. Sample report.

Discussion

Speaking as a regular AFD closer, I don't think the bot needs to say whether there is a quorum or not. I realize that this slightly deviates from the purpose of the bot, but is probably more useful it just says that there was a previous PROD, undeletion, AFD etc. Jo-Jo Eumerus (talk) 11:39, 26 February 2020 (UTC)

@Jo-Jo Eumerus: Thank you for your comment. The note "There are participations and the report will not shown in the deployment environment", as it says, will not shown in the AfD. It is only a log. But I wonder if I can use the information to do more things... --Kanashimi (talk) 12:03, 26 February 2020 (UTC)
@Jo-Jo Eumerus, if you mean the "From lack of discussion, this nomination appears to have no quorum" part, the intent was to give some context for why the task posts to some AfDs but not others. Otherwise open to tweaks on the default language. czar 02:20, 27 February 2020 (UTC)
Yeah, I was meaning that part. Perhaps what I am thinking is that a bot that generally reports the existence of past AFD, PRODs, undeletions etc. to an AFD is more useful than one that merely informs you of the softdelete eligibility, but they are not exactly the same bot task. Jo-Jo Eumerus (talk) 07:12, 27 February 2020 (UTC)
Surely, I can provide both them as the report shown. Maybe we can do some trial edits and see which is the most acceptable? --Kanashimi (talk) 05:16, 28 February 2020 (UTC)
@Kanashimi: How long of a trial would you prefer? --TheSandDoctor Talk 21:02, 7 March 2020 (UTC)
Thank you for reply. One week is good, and I will improve the code if needed. --Kanashimi (talk) 21:29, 7 March 2020 (UTC)
  • Approved for trial (7 days). I think this is one of those cases where a trial is needed both to demonstrate proof-of-concept as well as garner input from those directly impacted by the edits as to the usefulness of this task. Primefac (talk) 19:53, 15 March 2020 (UTC)

William Avery Bot 2

Operator: William Avery (talk · contribs · SUL · edit count · logs · page moves · block log · rights log · ANI search)

Time filed: 12:11, Wednesday, February 12, 2020 (UTC)

Function overview: Template {{R from scientific name}} can take a parameter ('fish', 'insect', etc) to subcategorise redirects from scientific names of organisms to their common names. The parameter is often not present in cases where it could usefully be supplied. This bot will add the parameter, where the correct value can be determined from the taxobox of the article that is the target of the redirect.

Automatic, Supervised, or Manual: Automatic

Programming language(s): Python, pywikibot

Source code available: https://bitbucket.org/WilliamAvery/wikipythonics Entry point for this task is redirectClassifierBot.py

Links to relevant discussions (where appropriate): I am not aware of any.

Edit period(s): One-time run to remove the current backlog. I will divide it into tranches using gcmstartsortkeyprefix and gcmendsortkeyprefix generator parameters. It might be re-run periodically in the future.

Estimated number of pages affected: 6000–8000 (25–30% of 25000 category members)

Namespace(s): Mainspace

Exclusion compliant (Yes/No): Yes

Function details:

The task can be accomplished with a simple python script.

  1. Retrieve pages in Category:Redirects from scientific names
  2. Fetch the HTML for the target page of each redirect, use BeautifulSoup to get taxonomic data from the taxonbox. Because the automatic taxobox system may be involved, examining the output HTML of the relevant taxobox is the cleanest route I can see to the required taxonomic information.
  3. Run the algorithm to determine the parameter value from the taxonomy
  4. Use mwparserfromhell to add the parameter value to the wikitext. There is a slew of redirects to template {{R from scientific name}}.
  5. Update page

Preliminary examination of a couple of thousand pages indicates many cases where 'fish', or 'insect' needs to be added, a few requiring 'crustacean', 'spider' or 'fungus' and none for 'plant'. (Plant articles are mostly *at* their scientific names.)


Discussion

  • Approved for trial (50 edits). Let's see how this does and go from there. William Avery, take all the time you need (no rush). --TheSandDoctor Talk 20:53, 7 March 2020 (UTC)
Thank you. I just this evening started looking at implementing this task with pywikibot, as the novelty of node.js is wearing off. William Avery (talk) 21:07, 7 March 2020 (UTC)
I have edited the BRFA information above to reflect my revised approach. William Avery (talk) 20:51, 10 March 2020 (UTC)

Seppi333Bot 2

Operator: Seppi333 (talk · contribs · SUL · edit count · logs · page moves · block log · rights log · ANI search)

Time filed: 22:49, Thursday, December 19, 2019 (UTC)

Function overview: Create missing redirects from gene symbols to articles about the corresponding gene/protein and categorize them using {{R from gene symbol}}.

Automatic, Supervised, or Manual: Automatic

Programming language(s): Python

Source code available: No. Not going to write it unless approved for trial.

Links to relevant discussions (where appropriate):

Edit period(s): One time run

Estimated number of pages affected: 2000 or 4000, give or take a few hundred (2000 if just the gene symbol redirects; 4000 if the parenthetically disambiguated redirects as well - see discussion below)

Namespace(s): Mainspace

Exclusion compliant (Yes/No): Yes

Function details: Create missing redirects from gene symbols to articles about the corresponding gene/protein and categorize them using {{R from gene symbol}}.

Discussion

{{BAGAssistanceNeeded}} Seppi333 (Insert 2¢) 23:17, 19 December 2019 (UTC)

Give us a little bit to review before BAGAN tagging please. — xaosflux Talk 00:38, 20 December 2019 (UTC)
My bad; will wait next time. Seppi333 (Insert 2¢) 01:13, 20 December 2019 (UTC)

It might be worth creating the corresponding set of parenthetically disambiguated " (gene)"-suffixed redirects (a la Wikipedia:Bots/Requests for approval/BogBot 3) along with the proposed set, though it's not quite as necessary. Doing so would double the number of redirects I'd need to create.
Wondering what others think; @Boghog: you in particular. Seppi333 (Insert 2¢) 03:30, 24 December 2019 (UTC)

The justification for the parenthetical redirects was very clear: provide an unambiguous mechanism for locating Gene Wiki articles. Most of these redirects have already been created. Hence it would very useful to provide redirects for the newly created articles and update redirects for the rare cases where the official gene has changed. The redirects provide an efficient mechanism to find Gene Wiki articles. Why is necessary to create and maintain lists of tens of thousands of genes? Who is going to use these lists and for what purpose? Boghog (talk) 15:08, 24 December 2019 (UTC)
Hmm; I don't think it's that rare TBH; I saw around half a dozen gene symbols change when I updated those gene lists today. That said, the gene lists aren't relevant to this task in any way; I'm just proposing the creation of redirects. But, to answer your questions, it's not any more or less necessary than creating and maintaining any other article on Wikipedia. I do it voluntarily because I know there are some who would find it useful/interesting for the same reason I do. I suspect that people who would "use" these lists are readers who are interested in human genes. The alternative is HGNC's gene browser which cuts off the list at 1000 entries and utilizes such an excessive amount of pagination so as to render the viewer relatively useless. As for the purpose, I can't say; I only know what I used it for. But, for what purpose would any of the other lists in lists of human genes be used for that matter? Seppi333 (Insert 2¢) 18:44, 24 December 2019 (UTC)

Been about a month, so... {{BAGAssistanceNeeded}}. Seppi333 (Insert 2¢) 05:26, 18 January 2020 (UTC)

  • Approved for trial (50 edits). If anyone would have an issue that should be a large enough number to make them notice. Primefac (talk) 21:46, 23 February 2020 (UTC)

Bots that have completed the trial period

PrimeBOT 31

Operator: Primefac (talk · contribs · SUL · edit count · logs · page moves · block log · rights log · ANI search)

Time filed: 15:18, Thursday, January 30, 2020 (UTC)

Function overview: Replace invalid numerical representations in {{CFB Standings Entry}} in accordance with MOS:NUMBERSIGN

Automatic, Supervised, or Manual: Auto

Programming language(s): AWB

Source code available: WP:AWB

Links to relevant discussions (where appropriate): User_talk:Primefac/Archive_26#Bot_request, User_talk:Primefac/Archive_26#Bot_request_(continued), User_talk:Primefac#Bot_request_for_number_signs_(again)

Edit period(s): OTR

Estimated number of pages affected: 500-20k

Namespace(s): Article, Template

Exclusion compliant (Yes/No): yes

Function details: MOS:NUMBERSIGN say that when abbreviating "number" the shorthand No. should be used and not #. This is apparently an issue in transclusions of {{CFB Standings Entry}}. There are ~4300 templates that call this template, and I suspect that they will represent the majority of the instances of # instead of No.

Discussion

Just to clarify, is the bot changing "#" to "No." or to {{abbr|No.|Number}}? --Gonnym (talk) 11:34, 31 January 2020 (UTC)

I randomly checked 25 of the related templates and none of them use {{abbr}}; therefore I would stick with the convention and just use No. Primefac (talk) 12:04, 31 January 2020 (UTC)
That isn't really surprising that a page failing to follow one part of MOS:NUMBERSIGN does not follow the other part which says When using the abbreviations, write Vol., No., or Nos.. The MoS is pretty clear in how this should be handled. No reason why this cleanup should not fix it completely instead of leaving it for subsequent editors to do the same exact edits. --Gonnym (talk) 12:25, 31 January 2020 (UTC)
That's a fair point, and I have no issue replacing # with {{abbr|No.|Number}} so that we follow the whole thing. Of course, to hamstring this whole process I also notice (and somewhat agree) with your comment on my talk about just removing it entirely, but that's (almost) a separate issue. Primefac (talk) 15:05, 31 January 2020 (UTC)
I take that my impression of NUMBERSIGN being a relatively uncontentious part of MOS is correct? I've seen some bitter disputes about MOS enforcement. Jo-Jo Eumerus (talk) 13:24, 31 January 2020 (UTC)
I'll be honest, I'm not sure. There was some heated back-and-forth on a semi-related TFD regarding whether # or "No." should be used in certain circumstances, but to me it read more about the template and not the interpretation of the MOS. Primefac (talk) 15:05, 31 January 2020 (UTC)
How about we play it safe and go with {{abbr|No.|Number}}? What do you think Primefac? --TheSandDoctor Talk 20:56, 7 March 2020 (UTC)
I'd be fine with that. Primefac (talk) 00:45, 9 March 2020 (UTC)
  • With the change to {{abbr|No.|Number}}, I am willing to mark as Approved for trial (50 edits).. Please permalink the contribs when done & take your time. --TheSandDoctor Talk 20:06, 15 March 2020 (UTC)
    Trial complete. Edits. Note that only 1964 (edit 2) and the 2019s (last three edits) contained a #, as all others converted No. per the discussion here. Primefac (talk) 21:18, 17 March 2020 (UTC)

QEDKbot

Operator: QEDK (talk · contribs · SUL · edit count · logs · page moves · block log · rights log · ANI search)

Time filed: 17:04, Saturday, February 8, 2020 (UTC)

Function overview: Deleting and nominating empty categories under WP:CSD#C1.

Automatic, Supervised, or Manual: Automatic

Programming language(s): Python (mostly Pywikibot and mwAPI)

Source code available: Not yet, will release on GitHub once deployed

Links to relevant discussions (where appropriate): See Wikipedia:Bots/Requests for approval/AnkitAWB 2, a previous version of this task run using AWB but tagged for deletion instead of deleting. Test runs were succesful, with one out of all nominated categories not being deleted (not due to a bot error). Advertised on WP:AN: WP:AN#Wikipedia:Bots/Requests for approval/QEDKbot

Edit period(s): Hourly (deletion), every 3 days (tagging)

Estimated number of pages affected: ~90k (<140k) (excludes hiddencats and includes all other categories with 0 members, even category redirects and possibly empty categories)

Namespace(s): Categories

Exclusion compliant (Yes/No): Yes

Adminbot (Yes/No): Yes

Function details:
General:

  • The bot will go over all categories with no members.
    • If the category does not exist, it will skip the page (this is necessary due to a lag in DB replicas).
      • If it exists, it will check that the category has 0 members.

Tagging:

  • If the category is a category redirect, it will check for backlinks.
    • If it has a talkpage and 1 backlink or if it has no talkpage and 0 backlinks, it adds the category Category:Empty categories with no backlinks, which can be assessed for CSD#G6 by other editors. A lot of these cat-redirects of these nature are implausible typos (which if in the article namespace would be eligible for R3) or meant for utility where this is none.
  • If the category is tagged with {{Db-c1}}, {{Possibly empty category}}, {{Disambiguation category}} or its redirecting templates, it will skip the page.
  • If the category is not any of the above, it will nominate it for deletion under CSD#C1.

Deletion:

  • It will check the Category:Empty categories awaiting deletion category.
  • If the latest revision is from 7 days ago, and does not meet any above criteria (of being possibly empty or a redirect category), it will delete the page.

If possible, I'd like a split trial where we nominate a fixed number of categories and delete a fixed number of categories.

Discussion

  •  Note: This bot appears to have edited since this BRFA was filed. Bots may not edit outside their own or their operator's userspace unless approved or approved for trial. AnomieBOT⚡ 18:40, 8 February 2020 (UTC)
  • @QEDK: Does "nominate it for deletion" mean nominate it for WP:CFD? Also note what the bot above me said. Jo-Jo Eumerus (talk) 18:47, 8 February 2020 (UTC)
    @Jo-Jo Eumerus: No, the bot will nominate it for CSD#C1. Apologies for the error above, all reverted now, and logging in userspace only. --qedk (t 桜 c) 18:49, 8 February 2020 (UTC)
  • Preliminary testing here: User:QEDKbot/Catlog, looks good to me. Once, the deletion bit is set up, will log that too. --qedk (t 桜 c) 12:19, 9 February 2020 (UTC)
  • Category redirects are not eligible for C1. Where is the community approval for this task as required by WP:ADMINBOT? — JJMC89 (T·C) 21:02, 9 February 2020 (UTC)
    @JJMC89: It does not nominate any redirect, disambiguation, CSD-nominated or non-empty category for deletion - only sorts them into a tracking category and nominates the rest for deletion which would meet C1. --qedk (t 桜 c) 21:14, 9 February 2020 (UTC)
    Either way, posted to AN. --qedk (t 桜 c) 21:20, 9 February 2020 (UTC)
    I know it doesn't, but you say the purpose of the tracking category is for assess[ment] for CSD#C1 by other editors. Assessment for C1 isn't needed since they are never eligible for C1. — JJMC89 (T·C) 21:33, 9 February 2020 (UTC)
    @JJMC89: All category redirects aren't useful and can be deleted under G6 (if not C1), that's also what the {{Category redirect}} template says. --qedk (t 桜 c) 21:39, 9 February 2020 (UTC)
    Assessment of category redirects should be done through WP:RFD, like all redirects. If there is a consensus that G6 can be applied to delete category redirects, please post a link to the discussion. C1 does not apply as category redirects are not categories, empty or otherwise. WP:G8 can apply if the target has been deleted. Ivanvector (Talk/Edits) 16:24, 10 February 2020 (UTC)
    I'm unsure what you're talking about, category redirects are categories, even if they are soft redirects to other categories. Assessment of all pages in the category namespace are done through WP:CFD, this is also evidenced from a lot of these category redirects which have backlinks to CFD (none to RFD afaik), where they were discussed and redirected in lieu of deletion. WP:CATRED is a subsection of CfD. --qedk (t 桜 c) 16:36, 10 February 2020 (UTC)
    Also, regarding the last bot run for categories, a lot of them were deleted under C1 or G6. G6 applies for all technical deletions or uncontroversial maintanence tasks, thus including deleting category redirects that are not useful. --qedk (t 桜 c) 16:40, 10 February 2020 (UTC)
    Well, they do come up at WP:RFD from time to time. Probably getting off-topic to your bot now, but (IMO) G6 shouldn't be used where another criterion applies. "Category redirects that are not useful" seems like a subjective criterion to me (who determines they're not useful?) but a redirect that points to a deleted page already qualifies for G8 deletion, that's what I meant. More specifically, a redirect that points at an empty category would be deleted (G8) when the category is deleted (C1), so determining the redirect's utility is a moot point. Ivanvector (Talk/Edits) 17:36, 10 February 2020 (UTC)
    Well, it would still be administrator discretion, the bot does not delete or tag for CSD, any category redirects, it is true that there's multiple routes it could go to. --qedk (t 桜 c) 19:19, 10 February 2020 (UTC)
  • I am aware of many maintenance categories which are tagged as such but not as {{empty category}} (in fact, one of which I removed from a page recently at [3]), as the already-provided category templates communicate mostly duplicate information. --Izno (talk) 04:15, 10 February 2020 (UTC)
    From preliminary testing, such categories are mostly not empty and should otherwise be eligible under C1? --qedk (t 桜 c) 05:48, 10 February 2020 (UTC)
  • I didn't see it from the task list you posted at AN, but will your bot disregard maintenance categories that are intended to be empty? Ivanvector (Talk/Edits) 16:24, 10 February 2020 (UTC)
    @Ivanvector: As far as I am aware, maintanence categories that can be empty at a given time are tagged with {{Possibly empty category}}, so the bot will skip all of them. --qedk (t 桜 c) 16:30, 10 February 2020 (UTC)
    Perfect. Ivanvector (Talk/Edits) 17:36, 10 February 2020 (UTC)
  • Question: what will happen when an editor adds an article to the category after the category has been added to Category:Empty categories awaiting deletion? Marcocapelle (talk) 22:53, 10 February 2020 (UTC)
    @Marcocapelle: Even after the list is fetched via the API, the bot performs two checks for each category: 1) "does the page exist?" 2) "does the category have no members?", failing either of which, the bot simply skips doing any action on the page. --qedk (t 桜 c) 07:57, 11 February 2020 (UTC)
  • Ok thanks. Then I have no objection. Marcocapelle (talk) 17:40, 11 February 2020 (UTC)
  • I'm currently the admin who deals with empty categories the most frequently (that is, every day) and UnitedStatesian is the primary editor who tags empty categories for deletion. The current system works fine and it's unclear to me how this bot would assist the daily work that we do. I don't see what problem this is solving. Does this bot conflict with BernsteinBot that is run by MZMcBride that we currently rely on? I don't know why MZMcBride is not included in this discussion or any of the editors and admins who work with categories, especially empty categories.
The primary problem we currently have is maintenance categories (normally categories organized by day) that do not appear on the Empty Category list because they are now excluded. This was a decision made by MZMcBride that I don't agree with but without this exclusion, empty categories for future dates were appearing on the list. Now, it is much more time-consuming for me and other admins to go through these maintenance categories, category by category, looking for empty categories from days that have passed. In general, we have a problem with categories tagged G6 that don't appear in deletion categories. This has been brought up on the Technical Village Pump multiple times and we've been told that WMF has been working on this issue for years but it is a low priority. if you could resolve this problem, your bot would be a welcome addition. Liz Read! Talk! 04:08, 14 February 2020 (UTC)
  • @Liz: The bot does not even edit in the same namespace as BernsteinBot, so I doubt a conflict would occur (unsure what kind of conflict you're referring to, I'm guessing the kind where they edit in the same areas)? BernsteinBot pulls a very specific set of empty categories for database reports, mine does not, it pulls all categories which have no members, checks if they exist and have no members and filters them in if they do not have any backlinks. Now, coming to deletion, the bot automatically determines when the cats were included and filters them out if they do not meet C1 criteria, that bot also automatically detects if the category meets the said C1 criteria and deletes them after an appropriate amount of time passes, every aspect is automated. This bot does not use database reports, but rather fetches all categories with 0 members via the API, this includes the maintanence categories you stated above, however if said maintanence categories are tagged with {{Pec}}, it will skip it, since that bot cannot determine if it should be a maintanence category that should exist. Now, coming to the final aspect, there is a new tracking category which is Category:Empty categories with no backlinks, this category is basically to track categories that basically have no utility and now editors can choose to trawl through them and identify categories no longer needed and tag/delete them. --qedk (t 桜 c) 10:15, 14 February 2020 (UTC)
  • @Maxim: Could you reflag this bot for purposes of testing (and because I don't want to flood RecentChanges), I requested a self-removal (with no issues), so I hope it's not an issue now. But, just for the sake of confirmation, this bot will only edit in its own userspace, so you needn't be worried about fallout. --qedk (t 桜 c) 10:22, 14 February 2020 (UTC)
    QEDK, done. Maxim(talk) 13:52, 14 February 2020 (UTC)
  • {{BAGAssistanceNeeded}} --qedk (t 桜 c) 19:57, 14 February 2020 (UTC)

Regarding the source code, "Not yet, will release on GitHub once deployed" is a bit weird.

The categories system is pretty bad overall. The quarter-assed support for category redirects is part of the problem. The distinction between a category description page existing and the category being populated is also part of the problem. The two issues are specific to MediaWiki and should be resolved there, in my opinion. The current practice of having bots auto-creating and auto-deleting maintenance (and non-maintenance) categories constantly is silly and unnecessary. --MZMcBride (talk) 00:25, 16 February 2020 (UTC)

@MZMcBride: Production code is a bit different from development code and I don't want to polish it until it's up for trial, most of the what will happen in the trial can be seen at the logs: User:QEDKbot/Catlog, User:QEDKbot/Deletion catlog. I honestly do not know if WMF will fix anything, so this bot is the best I've got. --qedk (t 桜 c) 08:33, 16 February 2020 (UTC)
  • Approved for trial. Unless it seems unreasonable to those involved, 40 tagging and 10 deletions seem like decent numbers, as neither will overload the system if there's an issue. Primefac (talk) 21:33, 23 February 2020 (UTC)
    @Primefac: Did you intend to admin-flag the bot as well or is there more process to it? Also, does "40 tagging" signify 40 CSD tags or 40 categorizations? --qedk (t 桜 c) 06:04, 24 February 2020 (UTC)
    Forgot, fixed. Not really bothered what type of edit is made (to answer your second question), though I suppose a few of each type would be reasonable as proof of concept. Primefac (talk) 11:12, 24 February 2020 (UTC)
  • If you're here because the bot is misbehaving, use the task disable page (listed on the userpage) as an alternative to blocking, there is a small lag, so please have some patience. With thanks. --qedk (t 桜 c) 20:26, 24 February 2020 (UTC)
  • Trial complete. Actually got finished a few days before but was busy to write a full report, so a quick run-down of things:
    • User:QEDKbot/Catlog, User:QEDKbot/Deletion catlog are some rough logs of what happened (deletion logs more accurate ofc)
    • Deletion looks good to go! No complaints, I think 10 deletions (excluding talk pages deleted under G8, I missed that out), all solid on a review.
    • Tagging category as empty, had an issue where the bot double-tagged, fixed in a later version. Good to go now!
    • Tagging for deletion needs some work, I have to fine-tune the regex further and ensure proper matches.
    In that aspect, I'm asking for an extended trial, 100 taggings, and another 20 deletions, since deletion is the sensitive aspect and I don't want the bot to mess up later. Courtesy ping to @Primefac:. --qedk (t 桜 c) 21:34, 5 March 2020 (UTC) Adding a note that I've reverted all false positives (mostly due to the C1 mistaggings) and I will be there to clean up if necessary. --qedk (t 桜 c) 21:38, 5 March 2020 (UTC)
  • A user has requested the attention of a member of the Bot Approvals Group. Once assistance has been rendered, please deactivate this tag by replacing it with {{tl|BAG assistance needed}}. --qedk (t 心 c) 16:12, 17 March 2020 (UTC)
  • Is it really necessary for the bot to make so many edits to its userspace? * Pppery * it has begun... 23:49, 17 March 2020 (UTC)
    @Pppery: It's a cronjob for a task that is disabled in categoryspace (see above; so it only updates the userspace). It makes 48 edits/per day, is that a lot at all? --qedk (t 心 c) 08:33, 18 March 2020 (UTC)
    It is, compared to the number of edits the bot makes that are not in userspace. * Pppery * it has begun... 13:21, 18 March 2020 (UTC)

AntiCompositeBot

Operator: AntiCompositeNumber (talk · contribs · SUL · edit count · logs · page moves · block log · rights log · ANI search)

Time filed: 20:25, Sunday, February 23, 2020 (UTC)

Automatic, Supervised, or Manual: automatic

Programming language(s): python

Source code available: https://github.com/AntiCompositeNumber/AntiCompositeBot/blob/master/src/harvcheck.py

Function overview: Tag Harvard-style references ({{sfn}}, {{harv}}, etc) when the link to the full citation is broken.

Links to relevant discussions (where appropriate): Wikipedia:Bot requests#Harvard Bot

Edit period(s): Continuous

Estimated number of pages affected: There are around 95,000 pages transcluding {{Sfn}} alone, but most probably won't be broken. Trial indicates 2100–2700 pages.

Exclusion compliant (Yes/No): Yes

Already has a bot flag (Yes/No): No

Function details: Harvard-style refs use a shortened footnote that links to the full citation elsewhere on the page. The shortened footnote alone does not contain enough information to verify the statements in the article. If the full citation has been removed or the citation or footnote have been improperly constructed, the footnote does not link to the citation.

When the bot finds a broken reference, it applies a {{subst:Broken footnote}} after the footnote, unless the footnote is already followed by {{broken footnote}} or {{citation not found}}.

Discussion

No opinion on the task so far, but as noted in the above discussion it's not clear that this can't be accomplished by appropriately tweaking the CS1/2 templates. Jo-Jo Eumerus (talk) 21:23, 23 February 2020 (UTC)
It cannot. Tweaking CS1 could reduce the number of broken footnotes, but it wouldn't eliminate them, nor would they categorize articles as being in need of cleanup. Headbomb {t · c · p · b} 21:51, 23 February 2020 (UTC)

@AntiCompositeNumber: does it also cover the other Harvard templates, like {{harvnb}}, {{harvtxt}}, {{sfnm}}, etc.? It should cover all footnote templates that create links to other citations. Also, it should substitute with the date (e.g. {{Broken footnote|date=February 2020}}. Headbomb {t · c · p · b} 21:53, 23 February 2020 (UTC)

@Headbomb: The bot doesn't care what template creates the links, as long as they are of the form ...{{PAGENAME}}#CITEREF... and there's no element on the page with a matching ID. The detection logic is very similar to User:Ucucha/HarvErrors.js's first check, except that I explicitly ignore any links to other pages. The bot does substitute the template, which automatically includes the date. See this edit to my test cases. --AntiCompositeNumber (talk) 22:52, 23 February 2020 (UTC)
I feel before this is deployed, CS1 templates should be updated to emit the default |ref=harv anchors. This would cut down on quite a bit of errors, and save everyone lots of headaches. Still, a technical trial will at least demonstrate feasibility and give an idea of how many such citations are affected. Maybe there's room for more limited bot runs while templates are being updated, with a full rollout at a later date.
For now, Approved for trial (25 edits).. I'll be recusing myself from final approval, given this is my idea of a bot. Headbomb {t · c · p · b} 03:20, 26 February 2020 (UTC)
Partially done, stopping now so I can make sure kubernetes doesn't try to restart it while I'm sleeping. 34597 random pages were checked and 16 were tagged in 3 hours. That's a hit about every 11 minutes or 2200 pages. I'll do the last 9 edits in the next few days. --AntiCompositeNumber (talk) 05:24, 27 February 2020 (UTC)
Surely there's a better way of finding pages than using random pages. Checking for pages with {{sfn}} on them, for example. Or using WP:DUMPs. Headbomb {t · c · p · b} 05:28, 27 February 2020 (UTC)
Seems useful, as we don't know which templates are out there, and to see what the percentages are eg. 5% of all articles have one of these templates of any type and 5% of those have a problem that can be fixed by the bot (ergo whatever 5% of 5% of 7 million is) to get a sense of the bot's footprint. At the same time it is making X number of edits for testing purposes. -- GreenC 15:18, 27 February 2020 (UTC)
Getting an idea could just as easily be achieved through "10% of 95,000 pages with sfn transclusions" or similar. The concern is during regular operation, it's much much more efficient to operate only on pages with templates that could be problematic, rather than access random pages until you cover every six million of them. Anyway, 16 out of 34,597 is ~0.046% of pages, which seems to be about 2,775 pages out of 6,000,000. If the sample was representative. Headbomb {t · c · p · b} 15:40, 27 February 2020 (UTC)
Assuming all templates are of equal popularity/usage. -- GreenC 15:53, 27 February 2020 (UTC)
Both have their upsides and their downsides. Using the random ordering at the current speed, it would take about 3 weeks to cover all articles. Querying the database for only articles that transclude any of these templates would yield 191,387 pages. That would miss any uncommon redirects or any links not generated from a template. I think that it would be worth running the full search at least once to try to catch some of that stuff. I'll run the remaining trial edits with the templatelinks search later. --AntiCompositeNumber (talk) 17:20, 27 February 2020 (UTC)
Trial complete. 563 articles from quarry:query/42383 in a random order scanned in roughly 10 minutes with 9 problems found. That's one every 62.5 articles, or 1.6% of the queried articles. That would put us around 2100 total articles to edit over about a day and a half. The biggest source of delay with the pre-prepared query is the throttle to maintain max 1 epm. Had a little bit of a hiccup with a bug in the code that detects existing problem tags and Kubernetes being overenthusiastic about restarting the bot. I've fixed that bug, written a regression test, and calmed Kubernetes down. --AntiCompositeNumber (talk) 19:09, 29 February 2020 (UTC)

Some problem edits

Problematic edit 1: [4] tags when {{full citation needed}} is already present
Problematic edit 2: [5] seems to be missing named references
Problematic edit 3: [6] adds a subst: that doesn't subst?

Headbomb {t · c · p · b} 19:25, 29 February 2020 (UTC)

  1. Fixed: added to ignore list.
  2. Not a bug: Not tagging reuses of a named reference was a conscious decision. When a reused citation is fixed, there is nothing that has to be done to the reuses to update them, so tagging them just makes more work for the editor fixing them.
  3. Fixed: Substitution does not work in ref tags. I already had something in place to try to handle this, but the template on that page was deeply nested inside the ref tag, so it didn't get picked up. I've added a second check for it, and the problem tag is now placed outside the ref tag. --AntiCompositeNumber (talk) 21:39, 29 February 2020 (UTC)
@AntiCompositeNumber: concerning 2, it's not about necessarily tagging every re-used citation, but rather at least one of them (probably the first use / the one generating the broken footnote). For example, ref 21 (Dauril Alden 1996) generates a broken footnote, but is not tagged as broken. There's a total of 10 distinct broken footnotes in that article, but only 4 are tagged. Headbomb {t · c · p · b} 22:42, 29 February 2020 (UTC)
The bot could also remove {{broken footnote}} once fixed. Headbomb {t · c · p · b} 22:42, 29 February 2020 (UTC)
I see what's happened there. That ref is <ref name=DA>{{Harvnb|Dauril Alden|1996|Page=152}}</ref>. The Cite extension considers the quotes around the name to be optional, but Parsoid will always include them when parsing HTML into wikitext. That means that string matching failed. Thankfully I can re-use the fix for problem 3 here. It's a bit hacky, but it works.
I'll look into removing tags from fixed references. --AntiCompositeNumber (talk) 02:01, 1 March 2020 (UTC)

Note: I recommend waiting on Help talk:Citation Style 1#make ref=harv the default for CS1 to be implemented before doing further trials / final approval. Headbomb {t · c · p · b} 21:10, 13 March 2020 (UTC)

Cewbot 3

Operator: Kanashimi (talk · contribs · SUL · edit count · logs · page moves · block log · rights log · ANI search)

Time filed: 12:10, Wednesday, February 5, 2020 (UTC)

Function overview: Maintain the template {{Vital article}} in the talk pages. Per this BOTREQ.

Automatic, Supervised, or Manual: Automatic

Programming language(s): wikiapi on GitHub

Source code available: 20200122.update vital articles.js on GitHub

Links to relevant discussions (where appropriate): Wikipedia:Bot_requests#Fixing Vital Articles bot

Edit period(s): daily

Estimated number of pages affected: Around 500 the first time

Namespace(s): Talk:

Exclusion compliant (Yes/No): Yes

Function details: This task will take over the work of Wikipedia:Bots/Requests for approval/SSTbot 4.

Discussion

Approved for trial (50 edits). Primefac (talk) 21:35, 23 February 2020 (UTC)

Creffbot

Operator: Creffett (talk · contribs · SUL · edit count · logs · page moves · block log · rights log · ANI search)

Time filed: 01:45, Thursday, November 14, 2019 (UTC)

Automatic, Supervised, or Manual: automatic

Programming language(s): Python

Source code available: https://github.com/creffett/creffbot_wikipedia

Function overview: Maintain CAT:UAA by removing the template from users who have had the template applied for a long time and users who are blocked.

Links to relevant discussions (where appropriate): Wikipedia:Bot_requests#Feedback_request_-_bot_to_maintain_CAT:UAA_and_similar_categories

Edit period(s): daily

Estimated number of pages affected: currently 4,000 in the category

Exclusion compliant (Yes/No): Yes

Already has a bot flag (Yes/No): No

Function details: creffbot will remove the category tag for users who have been tagged as having possible username issues and are either stale or blocked. Per the category's description, Accounts should be removed from this category when they have been indefinitely blocked, inactive for more than one week, or are clearly not violations of the username policy. My plan is to initially have the bot only run on users who have been inactive for more than one year during initial testing, and then move it up to one month during operations. The bot would run once daily. Note that User:AvicBot was approved for a similar task, but that was AWB rather than fully automated and AvicBot's human has been inactive for a while.

Rationale: currently, CAT:UAA isn't very useful to patrollers since it is clogged with very stale users. By pruning the category, it would be practical for patrollers to monitor the category.

Discussion

Two further notes:
  • I have tested the user-identifying capability successfully, but haven't tested the template-removal. I will test that in the bot's sandbox in the immediate future. I hope to have the bot ready for operational testing within the next day or two.
  • I will have the bot log its operations to a subpage of its userpage.
creffett (talk) 01:50, 14 November 2019 (UTC)
  • Useful task. Would make that category usable again. –xenotalk 14:17, 16 November 2019 (UTC)
  • Editing features tested, ready for limited operational testing. creffett (talk) 14:28, 16 November 2019 (UTC)
Approved for trial (10 edits). ns:23 only. — xaosflux Talk 15:21, 25 November 2019 (UTC)
Please include a link to your task (either a description on your bot userpage, or this BRFA) in your edit summaries. Mark edits as "minor". — xaosflux Talk 15:24, 25 November 2019 (UTC)
Xaosflux, isn't it ns:3 (User talk:)? ‑‑Trialpears (talk) 15:30, 25 November 2019 (UTC)
@Trialpears: ah ok, in that case reducing that trial to 10, since every case of this is going to trigger the "new messages" flag for these accounts while running without a bot flag. — xaosflux Talk 15:33, 25 November 2019 (UTC)
Y'all might consider adding this bot to MediaWiki:Echo-blacklist - if my understanding of the scope of that page is correct, listing the bot there will prevent it from generating messages. Jo-Jo Eumerus (talk) 22:06, 25 November 2019 (UTC)
@Jo-Jo Eumerus: that page only works for things like inline/summary notifications, not for directly editing a usertalk page. Once flagged as a bot, the account will gain access to 'nominornewtalk' permission that will suppress these. — xaosflux Talk 23:43, 25 November 2019 (UTC)
@Xaosflux: Test complete, no significant issues (it didn't log the first removal due to a syntax error in the logging function, the rest of the issues were just me realizing that a few log messages and edit summaries needed to have links added). Please have a look at the bot's actions at Special:Contributions/Creffbot at your convenience. For reference, I set the inactivity threshold to 1 year for testing, per my BRFA above I plan to move that down to one month after approval unless someone would prefer it be a different value. creffett (talk) 23:40, 25 November 2019 (UTC)
@Creffett: I'm not sure if a per-edit log-edit is needed for this task, will you need that to go live? — xaosflux Talk 23:46, 25 November 2019 (UTC)
Xaosflux, that's easy to remove. Will take care of that. creffett (talk) 23:47, 25 November 2019 (UTC)
All set, but I'll be traveling for the rest of the week so no test runs for a while. creffett (talk) 03:19, 27 November 2019 (UTC)
  • @Xeno: regarding the usefulness of the category, do you find that the task threshold above is appropriate for removals (~1 month)? — xaosflux Talk 23:46, 25 November 2019 (UTC)
    A month seems fine. I wonder if the removed names should be tracked for resumption of editing? –xenotalk 15:36, 27 November 2019 (UTC)
    Xeno, are you suggesting that editors who were removed would be re-added if they become active? I could do that, though I'd rather that be a separate BRFA so I can get this signed off. In the interim, I can compromise on logging (re xaosflux's comment above) - I'll batch the logging so that it only logs at the end of a run instead of logging after every removal. creffett (talk) 17:00, 27 November 2019 (UTC)
  • Creffett, looks like there are still 5 edits to go in the trial. Do you still want to proceed? Primefac (talk) 16:24, 8 December 2019 (UTC)
    Primefac, yeah, I would like to proceed with approval - I thought that that 10 was a max rather than expected number of edits, and I was satisfied with the bot's operation after those first five edits so I stopped early. creffett (talk) 17:12, 8 December 2019 (UTC)
    That's the expected number, so that any issues or bugs can potentially be worked out. Primefac (talk) 17:39, 8 December 2019 (UTC)
    Primefac, understood. I do have a couple tweaks that I'd like to make, so I'll go finish that off now. creffett (talk) 17:43, 8 December 2019 (UTC)
    Trial complete. Primefac okay, ran the other five edits in order to test out batched logging (and yes, I did run find a couple of bugs in the process...). Ready for review at your convenience. creffett (talk) 18:09, 8 December 2019 (UTC)
    {{BAGAssistanceNeeded}} Primefac/xaosflux friendly ping, is there anything else I need to do to get approval done now that the trial is complete? creffpublic a creffett franchise (talk to the boss) 19:34, 23 January 2020 (UTC)
  • As far as I see from the source code (I'm unfamiliar with the library used though), it removes the category from temporarily blocked users as well. Is that intended? (I don't think it is for most categories) How about the new partial blocks? Edible Melon (talk · contribs · block user) 14:28, 1 February 2020 (UTC)
    Edible Melon, the bot should only be dealing with users in CAT:UAA, which I would guess does not contain temporarily blocked users. Woudl this be a fair assessment, Creffett? Primefac (talk) 19:04, 2 February 2020 (UTC)
    Primefac (thanks for the ping, I missed the original question), that was my assumption when designing the bot. If subsequent BRFAs expand this bot to maintain other categories, that assumption might need to be revisited, but I expect that the overwhelming majority of blocked users in CAT:UAA will have gotten either a username block or spam block, both of which are indefinite and complete blocks. Now, I could certainly see a case for CAT:UWCOI behaving differently, since I could see a policy of people with COI issues getting partial blocks in their COI area, but that's out of scope for this task. creffett (talk) 20:03, 2 February 2020 (UTC)


Approved requests

Bots that have been approved for operations after a successful BRFA will be listed here for informational purposes. No other approval action is required for these bots. Recently approved requests can be found here (edit), while old requests can be found in the archives.


Denied requests

Bots that have been denied for operations will be listed here for informational purposes for at least 7 days before being archived. No other action is required for these bots. Older requests can be found in the Archive.

Expired/withdrawn requests

These requests have either expired, as information required by the operator was not provided, or been withdrawn. These tasks are not authorized to run, but such lack of authorization does not necessarily follow from a finding as to merit. A bot that, having been approved for testing, was not tested by an editor, or one for which the results of testing were not posted, for example, would appear here. Bot requests should not be placed here if there is an active discussion ongoing above. Operators whose requests have expired may reactivate their requests at any time. The following list shows recent requests (if any) that have expired, listed here for informational purposes for at least 7 days before being archived. Older requests can be found in the respective archives: Expired, Withdrawn.