Manual:Creating a bot/cs

Roboti MediaWiki nebo jen boti jsou automatické procesy, které interagují s Wikipedií (a dalšími projekty Wikimedie), jako by to byly lidské editory. Tato stránka se pokouší vysvětlit, jak provést vývoj robota pro použití na projektech Wikimedie a mnohé z toho lze přenést na jiné wiki založené na MediaWiki. Vysvětlení je zaměřeno hlavně na ty, kteří mají nějaké předchozí zkušenosti s programováním, ale nejsou si jisti, jak tyto znalosti aplikovat na vytvoření robota MediaWiki.

Proč bych potřeboval vytvořit robota?

Boti dokážou automatizovat úkoly a provádět je mnohem rychleji než lidé. Pokud máte jednoduchý úkol, který musíte provést mnohokrát (příkladem může být přidání šablony na všechny stránky v kategorii s 1 000 stránkami), pak je tento úkol vhodnější pro robota než pro člověka.

Úvahy před vytvořením robota

Opětovné použití stávajících robotů

Často je mnohem jednodušší požádat o úlohu robota od stávajícího robota. Pokud máte pouze pravidelné požadavky nebo je vám programování nepříjemné, je to obvykle nejlepší řešení. Některé wikiny mají vyhrazenou stránku, kde lze takové požadavky podávat. Kromě toho existuje řada nástrojů, které má kdokoli k dispozici. Většina z nich má podobu vylepšených webových prohlížečů s funkcemi specifickými pro MediaWiki. Nejoblíbenější z nich je Project:AutoWikiBrowser (AWB), prohlížeč speciálně navržený pro pomoc s úpravami na Wikipedii a dalších projektech Wikimedie. Úplnější seznam nástrojů lze nalézt na w:Wikipedia:Tools/Editing tools na anglické Wikipedii. Nástroje, jako je AWB, lze často ovládat s malou nebo žádnou znalostí programování.

Použijte Toolhub k prozkoumání dostupných nástrojů pro wikiny Wikimedie.

Opětovné použití kódové základny

Pokud se rozhodnete, že potřebujete vlastního robota kvůli četnosti nebo novosti vašich požadavků, nemusíte ho psát od začátku. Mnoho robotů zveřejňuje svůj zdrojový kód, který lze někdy znovu použít s malým dodatečným vývojovým časem. Ke stažení je také řada standardních rámců robotů. Tyto rámce obsahují převážnou většinu kódu robota. Vzhledem k tomu, že tyto rámce botů se běžně používají a složité kódování provedli jiní a bylo důkladně testováno, je mnohem snazší získat pro použití roboty založené na těchto rámcích. Nejoblíbenějším a nejběžnějším z těchto frameworků je Pywikibot (PWB), robot framework napsaný v Pythonu. Je důkladně zdokumentován a otestován a je již k dispozici mnoho standardizovaných skriptů Pywikibotů (pokynů pro roboty). Další příklady frameworks robotů lze nalézt níže. Pro některé z těchto frameworks robotů, jako je PWB, je k úspěšnému spuštění robota nezbytná obecná znalost skriptů (je důležité tyto rámce pravidelně aktualizovat).

Důležité otázky

Psaní nového robota vyžaduje značné programátorské schopnosti. Zcela nový robot musí projít důkladným testováním, než bude schválen pro běžný provoz. Plánování je zásadní pro získání bezchybného, účinného a efektivního programu. Důležité jsou následující počáteční úvahy:

  • Bude robot ručně asistovaný nebo plně automatizovaný?
  • Vytvoříte robota sami, nebo s pomocí dalších programátorů?
  • Jaký jazyk bude použit k implementaci robota?
  • Budou protokolovány požadavky, úpravy nebo jiné akce robota? Pokud ano, budou protokoly uloženy na místních médiích nebo na wiki stránkách?
  • Poběží robot uvnitř webového prohlížeče (například napsaný v JavaScriptu) nebo to bude samostatný program?
  • Pokud je robot samostatný program, poběží na vašem místním počítači nebo na vzdáleném serveru, jako je Toolforge?
  • Pokud robot běží na vzdáleném serveru, budou moci robota obsluhovat nebo spustit další editoři?

Jak funguje robot MediaWiki?

Přehled provozu

Stejně jako lidský editor čte robot MediaWiki wiki stránky a provádí změny tam, kde si myslí, že je třeba provést změny. Rozdíl je v tom, že ačkoli jsou roboti rychlejší a méně náchylní k únavě než lidé, nejsou zdaleka tak bystří jako my. Boti jsou dobří v opakujících se úlohách, které mají snadno definované vzorce, kde je třeba dělat jen málo rozhodnutí.

V nejtypičtějším případě se robot přihlásí ke svému účtu a požaduje stránky z wiki v podstatě stejným způsobem jako prohlížeč – i když stránku nezobrazí na obrazovce, ale pracuje na ní v paměti – a poté programově prozkoumá kód stránky, aby zjistil, zda není třeba provést nějaké změny. Poté provede a odešle jakékoli úpravy, pro které byl navržen, opět stejným způsobem, jakým by to udělal prohlížeč.

Protože roboti přistupují ke stránkám stejným způsobem jako lidé, mohou se roboti potýkat se stejnými potížemi jako lidští uživatelé. Mohou se dostat do konfliktů úprav, mít časový limit stránky nebo narazit na jiné neočekávané komplikace při vyžádání stránek nebo provádění úprav. Vzhledem k tomu, že objem práce provedené robotem je větší než objem práce provedené živou osobou, je pravděpodobnější, že se s těmito problémy setká robot. Proto je důležité při psaní robota tyto situace zvážit.

API pro roboty

Aby mohl robot provést změny na wiki stránkách, musí nutně načíst stránky z wiki a odeslat úpravy zpět. Pro tento účel je k dispozici několik aplikačních programovacích rozhraní (API).

Některé webové servery jsou nakonfigurovány tak, aby udělovaly požadavky na komprimovaný obsah (gzip). To lze provést zahrnutím řádku "Accept-Encoding: gzip" do hlavičky požadavku HTTP. Pokud hlavička HTTP odpovědi obsahuje "Content-Encoding: gzip", dokument je ve formě gzip, jinak je v běžné nekomprimované podobě. Všimněte si, že toto je specifické pro webový server a ne pro software MediaWiki. Jiné stránky využívající MediaWiki tuto funkci nemusí mít. Pokud používáte existující botový framework, měl by zvládat nízkoúrovňové operace, jako je tato.

Přihlášení

Aby mohli provádět úpravy, musí být schválení roboti přihlášeni. Přestože robot může zadávat požadavky na čtení bez přihlášení, roboti, kteří dokončili testování, by se měli přihlásit ke všem aktivitám. Roboti přihlášení z účtu s příznakem robota (viz #Příznak robota níže) mohou získat více výsledků na dotaz z Mediawiki API (api.php). Většina rámců botů by měla zpracovávat přihlášení a soubory cookie automaticky, ale pokud nepoužíváte existující rámec, budete muset postupovat podle těchto kroků.

Z bezpečnostních důvodů musí být přihlašovací údaje předány pomocí metody HTTP POST. Protože parametry požadavků HTTP GET jsou snadno viditelné v URL, přihlášení přes GET je zakázáno.

K přihlášení robota pomocí MediaWiki API jsou potřeba 2 požadavky:

Požadavek 1 – toto je požadavek GET na získání přihlašovacího tokenu

To vrátí parametr "logintoken" ve formě JSON, jak je zdokumentováno na API:Přihlášení. K dispozici jsou další výstupní formáty. Vrátí také soubory cookie HTTP, jak je popsáno níže.

Požadavek 2 – toto je POST pro dokončení přihlášení

kde TOKEN je token z předchozího výsledku. Soubory cookie HTTP z předchozího požadavku musí být také předány s druhým požadavkem.

Úspěšný pokus o přihlášení povede k tomu, že server Wikimedie nastaví několik HTTP cookie. Bot musí uložit tyto soubory cookie a odeslat je zpět pokaždé, když zadá požadavek (to je zvláště důležité pro úpravy). Na anglické Wikipedii by se měly používat následující soubory cookie: enwikiUserID, enwikiToken a enwikiUserName. Soubor cookie enwikisession je nutný ke skutečnému odeslání úpravy nebo potvrzení nějaké změny, jinak bude vrácena chybová zpráva MediaWiki:Session fail preview.

Přihlášení k hlavnímu účtu přes action=login je zastaralé a může přestat fungovat bez varování. Chcete-li nadále používat kód robota, který se přihlašuje pomocí action=login, viz Special:BotPasswords.

Editace; upravit tokeny

MediaWiki používá systém edit tokenů pro provádění úprav stránek MediaWiki a také pro další operace, které upravují stávající obsah, jako je například vrácení zpět. Token vypadá jako dlouhé hexadecimální číslo následované '+\', například:

d41d8cd98f00b204e9800998ecf8427e+\

Úlohou tokenů úprav je zabránit "únosu úprav", kdy jsou uživatelé oklamáni, aby provedli úpravy kliknutím na jediný odkaz.

Proces úprav zahrnuje dva požadavky HTTP. Nejprve je třeba podat žádost o token pro úpravy. Poté je třeba provést druhý požadavek HTTP, který odešle nový obsah stránky spolu s právě získaným tokenem úprav. Není možné provést úpravu v jednom požadavku HTTP. Token úprav zůstává stejný po dobu trvání relace přihlášeného uživatele, takže token pro úpravy je třeba načíst pouze jednou a lze jej použít pro všechny následující úpravy.

Chcete-li získat token pro úpravy, postupujte takto:

Pokud token úprav, který robot obdrží, nemá hexadecimální řetězec (tj., token pro úpravy je pouze '+\'), pak robot s největší pravděpodobností není přihlášen. To může být způsobeno řadou faktorů: Selháním ověřování se serverem, přerušením připojení, určitým časovým limitem nebo chybou při ukládání nebo vracení správných souborů cookie. Pokud se nejedná o chybu v programování, přihlaste se znovu a obnovte soubory cookie pro přihlášení. Roboti musí použít tvrzení, aby se ujistili, že jsou přihlášeni.

Úprava konfliktů

Ke konfliktům úprav dochází, když je na stejné stránce provedeno více překrývajících se pokusů o úpravy. Téměř každý robot bude nakonec chycen v konfliktu úprav toho či onoho druhu a měl by obsahovat nějaký mechanismus pro testování a přizpůsobení se těmto problémům.

Boti, kteří používají Mediawiki API (api.php), by měli získat token pro úpravy spolu s starttimestamp a "základním" časovým razítkem poslední revize před načtením textu stránky v rámci přípravy na úpravu. prop=info|revisions lze použít k načtení tokenu i obsahu stránky v jednom dotazu. Příklad:

Při odesílání úprav nastavte atributy starttimestamp a basetimestamp a zkontrolujte odpovědi serveru, zda neobsahují chyby. Další podrobnosti viz API:Edit - Create&Edit pages.

Obecně řečeno, pokud se úprava nepodaří dokončit, robot by měl stránku znovu zkontrolovat, než se pokusí provést novou úpravu, aby se ujistil, že je úprava stále vhodná. Dále, pokud robot znovu zkontroluje stránku, aby znovu odeslal změnu, měl by být opatrný, aby se vyhnul jakémukoli chování, které by mohlo vést k nekonečné smyčce, a jakémukoli chování, které by se dokonce mohlo podobat úpravě warring.

Přehled procesu vývoje robota

Ve skutečnosti je kódování nebo psaní robota pouze jednou částí vývoje robota.

Níže uvedený vývojový cyklus je doporučením z anglické Wikipedie.

Přehled cyklu vývoje robotů na anglické Wikipedii

Na wikinách Wikimedie zajistěte, aby váš robot dodržoval všechny potenciální zásady robota na wiki.

Záměr

  • Prvním úkolem při vytváření robota MediaWiki je extrahovat požadavky nebo přijít s nápadem.
  • Ujistěte se, že jiný stávající robot již nedělá to, co by podle vás měl dělat váš robot.

Specifikace

  • Specifikace je úkolem přesně popsat software, který má být napsán, pokud možno důsledným způsobem. Měli byste přijít s podrobným návrhem toho, co chcete, aby dělal. Zkuste tento návrh prodiskutovat s některými redaktory a na základě zpětné vazby jej upřesnit. I skvělý nápad lze vylepšit začleněním nápadů od jiných editorů.
  • V nejzákladnější formě musí váš určený robot splňovat následující kritéria:
  • Robot je neškodný (nesmí provádět úpravy, které by mohly být považovány za narušující hladký chod wiki)
  • Robot je užitečný (poskytuje užitečnou službu efektivněji, než by mohl lidský editor)
  • Robot neplýtvá prostředky serveru.

Architektura softwaru

  • Přemýšlejte o tom, jak byste jej mohli vytvořit a jaké programovací jazyky a nástroje byste použili. Architektura se zabývá zajištěním toho, aby softwarový systém splňoval požadavky produktu, a také zajištěním toho, že budoucí požadavky lze řešit. Některé programovací jazyky jsou pro některé úlohy vhodnější než jiné, další podrobnosti viz část o programovacích jazycích níže.

Implementace

Implementace (neboli kódování) zahrnuje přeměnu návrhu a plánování kódu. Může to být nejzřejmější část práce softwarového inženýrství, ale není to nutně ta největší část. Ve fázi implementace byste měli:

  • Vytvořte účet pro svého robota. Po přihlášení přejděte na registrační stránku a vytvořte si účet a propojte jej se svým. (Pokud si nevytvoříte účet robota, když jste přihlášeni, může být na některých wikinách zablokován podle jejich zásad)
  • Vytvořte uživatelskou stránku pro svého robota. Úpravy vašeho robota nesmí být prováděny pod vaším vlastním účtem. Váš robot bude potřebovat svůj vlastní účet s vlastním uživatelským jménem a heslem.
  • Přidejte stejné informace na uživatelskou stránku robota. Pro každou funkci by bylo dobré přidat odkaz na schvalovací stránku (ať už schválenou nebo ne).
  • Kódujte svého robota ve vámi zvoleném programovacím jazyce.

Testování

Dobrým způsobem, jak otestovat svého robota při vývoji, je nechat jej ukázat změny (pokud nějaké), které by provedl na stránce, spíše než ve skutečnosti upravovat živou wiki. Některé rámce botů (jako například pywikibot) mají předkódované metody pro zobrazení rozdílů.

Dokumentace

Důležitým (a často přehlíženým) úkolem je dokumentace interního návrhu vašeho robota za účelem budoucí údržby a vylepšení. To je zvláště důležité, pokud se chystáte povolit klony vašeho robota. V ideálním případě byste měli zveřejnit zdrojový kód svého robota na jeho uživatelské stránce nebo v systému kontroly revizí (viz #Robot s otevřeným zdrojovým kódem), pokud chcete, aby ostatní mohli spouštět jeho klony. Tento kód by měl, pro snadné použití, být dobře zdokumentován (obvykle pomocí komentářů).

Dotazy/stížnosti

Měli byste být připraveni reagovat na dotazy nebo námitky vůči vašemu robotovi na vaší uživatelské diskusní stránce, zejména pokud působí v potenciálně citlivé oblasti.

Údržba

Údržba a vylepšení vašeho robota, aby se vyrovnal s nově objevenými chybami nebo novými požadavky, může trvat mnohem déle než počáteční vývoj softwaru. Nejen, že může být nutné přidat kód, který neodpovídá původnímu návrhu, ale pouhé určení toho, jak software funguje v určitém okamžiku po jeho dokončení, může vyžadovat značné úsilí (to je další důvod, proč dokumentovat svůj kód za pochodu).

Obecné pokyny pro spuštění robota

Kromě oficiálních zásad pro roboty, které pokrývají hlavní body, které je třeba vzít v úvahu při vývoji vašeho robota, existuje řada obecnějších rad, které je třeba vzít v úvahu při vývoji vašeho robota.

Osvědčené postupy pro roboty

  • Nastavte pro svého robota vlastní hlavičku User-Agent (podle zásad Wikimedie pro User-Agent, pokud bude váš robot pracovat na wikinách Wikimedie). Pokud tak neučiníte, váš robot může narazit na chyby a může být zablokován na úrovni serveru.
  • Použijte parametr maxlag s maximálním zpožděním 5 sekund. To umožní botovi běžet rychle, když je zatížení serveru nízké, a přibrzdit robota, když je zatížení serveru vysoké.
    • Pokud píšete bota v rámci, který nepodporuje maxlag, omezte celkový počet požadavků (požadavky na čtení a zápis dohromady) na maximálně 10/minutu.
  • Kdykoli je to možné, používejte MediaWiki API a nastavte limity dotazů na nejvyšší hodnoty, které server povoluje, abyste minimalizovali celkový počet požadavků, které je třeba provést.
  • Požadavky na úpravy (zápis) jsou z hlediska času serveru dražší než požadavky na čtení. Buďte nenároční na úpravy a navrhněte svůj kód tak, aby bylo co nejméně úprav.
    • Pokuste se sjednotit úpravy. Jedna velká úprava je lepší než 10 menších.
  • Pokud je to možné, povolte trvalé připojení HTTP a kompresi ve vaší knihovně klienta HTTP.
  • Nevytvářejte vícevláknové požadavky. Před zahájením dalšího počkejte na dokončení jednoho požadavku serveru
  • Po obdržení chyb ze serveru ustupte. Chyby, jako jsou časové limity, jsou často známkou velkého zatížení serveru. Použijte sekvenci stále delších prodlev mezi opakovanými požadavky.
  • Použijte assertion k zajištění přihlášení vašeho robota.
  • Před provedením velkých automatických běhů svůj kód důkladně otestujte. Individuálně prozkoumejte všechny úpravy ve zkušebních provozech a ověřte, zda jsou dokonalé.

Běžné funkce botů, které byste měli zvážit k implementaci

Ruční pomoc

Pokud váš robot dělá něco, co vyžaduje úsudek nebo vyhodnocení kontextu (např. oprava pravopisu), měli byste zvážit ruční pomoc, což znamená, že všechny úpravy před uložením ověří člověk. To výrazně snižuje rychlost robota, ale také výrazně snižuje chyby.

Zakázání robota

Je dobrou zásadou robotů mít funkci, která zakáže činnost robota, pokud je to požadováno. Pamatujte, že pokud se váš robot pokazí, je vaší odpovědností po něm uklidit! Můžete nechat robota odmítnout spuštění, pokud na jeho diskusní stránce zůstala zpráva, za předpokladu, že zpráva může být stížností na jeho aktivity. To lze zkontrolovat pomocí dotazu API meta=userinfo. Příklad na anglické Wikipedii:

Nebo můžete mít stránku, která robota vypne, pokud se změní text na stránce (např. požadujete, aby stránka byla prázdná, obsahovala pouze slovo "True" nebo něco podobného). To lze zkontrolovat načtením obsahu stránky před každou úpravou.

Podpis

Stejně jako člověk, pokud váš robot provádí úpravy diskusní stránky v MediaWiki, měl by svůj příspěvek podepsat čtyřmi vlnovkami (~~~~). Podpisy obvykle patří pouze do jmenných prostorů talk (diskuse).

Bot Flag

Úpravy robota budou viditelné na Special:RecentChanges, pokud nejsou úpravy nastaveny tak, aby označovaly robota. Jakmile je bot schválen a je mu uděleno oprávnění k označení bota, lze do volání API přidat bot=True – viz API:Úpravy, abyste skryli úpravy bota v Special:RecentChanges.

V Pythonu pomocí mwclient nebo wikitools pak přidání Bot=True do příkazu edit/save nastaví úpravu jako úpravu bota – např.

PageObject.edit(text=pagetext, bot=True, summary=pagesummary)

Sledování stavu robota

Pokud je robot plně automatizovaný a provádí pravidelné úpravy, měli byste pravidelně kontrolovat, zda běží podle specifikace a jeho chování nebylo změněno změnami softwaru.

Roboti s otevřeným zdrojovým kódem

Mnoho provozovatelů botů se rozhodlo vytvořit svůj kód jako open source a občas může být vyžadováno před schválením pro zvláště složité roboty. Vytvoření kódu open source má několik výhod:

  • Umožňuje ostatním zkontrolovat váš kód kvůli potenciálním chybám. Stejně jako u prózy je pro autora kódu často obtížné ji adekvátně zhodnotit.
  • Ostatní mohou váš kód použít k vytvoření svých vlastních botů. Nový uživatel s psaním botů může být schopen použít váš kód jako příklad nebo šablonu pro své vlastní roboty.
  • Podporuje dobré bezpečnostní postupy spíše než bezpečnost skrze temnotu.
  • Pokud projekt opustíte, umožní to ostatním uživatelům spouštět vaše úlohy botů, aniž by museli psát nový kód.

Otevřený zdrojový kód, i když je vyžadován jen zřídka, je obvykle podporován v souladu s otevřenou a transparentní povahou wiki, i když existují případy, kdy by kód neměl být zveřejněn. Například otevřený kód pro hledání proxy ProcseeBot by mohl být použit pro škodlivé účely na jiných webech.

Vytváření kódu jako open source může přidat nějakou práci navíc. Je třeba zajistit, aby citlivé informace, jako jsou hesla, byly odděleny do souboru, který se nezveřejňuje.

Pro uživatele, kteří chtějí otevřít svůj kód, je k dispozici několik možností. Někteří uživatelé se rozhodnou umístit kód na podstránku uživatelského prostoru robota, ačkoli to může být obtížné udržovat, pokud to není automatizované, a vede to k tomu, že kód je licencován podle licenčních podmínek wiki kromě jakýchkoli jiných podmínek, které můžete zadat. Dalším řešením je použít systém kontroly revizí, jako je SVN, Git nebo Mercurial. Wikipedie obsahuje články porovnávající různé softwarové možnosti a webové stránky pro hostování kódu, z nichž mnohé nemají žádné náklady. Wikimedie také nabízí hosting úložiště kódu Git pro své uživatele a provozování softwarových nástrojů souvisejících s Wikimedií prostřednictvím cloudové služby Wikimedie.

Programovací jazyky a knihovny

Více na stránce: API:Kód klienta

Boti mohou být napsáni téměř v jakémkoli programovacím jazyce. Výběr jazyka často závisí na zkušenostech tvůrce botů (které jazyky jsou známé) nebo na dostupnosti předem vyvinutých knihoven pro provedení požadovaného úkolu. Následující seznam obsahuje některé jazyky, které mají knihovny, které pomáhají s úlohami robotů.

Awk

Perl

Pokud se nacházíte na webovém serveru, můžete spustit svůj program a komunikovat s ním, když běží, prostřednictvím w:Common Gateway Interface z vašeho prohlížeče. Pokud vám váš poskytovatel internetových služeb poskytuje webový prostor, je velká šance, že máte přístup k Perlu postavenému na webovém serveru, ze kterého můžete spouštět své programy v Perlu.

Knihovny:

  • MediaWiki::API – Základní rozhraní API, které umožňuje skriptům automatizovat úpravy a extrakci dat z webů řízených MediaWiki.
  • MediaWiki::Bot – Poměrně kompletní MediaWiki bot framework napsaný v Perlu. Poskytuje vyšší úroveň abstrakce než MediaWiki::API. Pluginy poskytují funkce administrátora a správce. Momentálně nepodporováno.

PHP

PHP lze také použít pro programování robotů. Vývojáři MediaWiki již znají PHP, protože to je jazyk MediaWiki a jeho rozšíření jsou napsána. PHP je zvláště dobrá volba, pokud chcete svému botovi poskytnout rozhraní založené na webovém formuláři. Předpokládejme například, že chcete vytvořit robota pro přejmenování kategorií. Můžete vytvořit HTML formulář, do kterého zadáte aktuální a požadované názvy kategorie. Když je formulář odeslán, váš robot může číst tyto vstupy, poté upravit všechny články v aktuální kategorii a přesunout je do požadované kategorie. (Je zřejmé, že každý robot s rozhraním formuláře by musel být nějak zabezpečen před náhodnými webovými surfaři.)

Tabulka Funkce botů PHP na anglické Wikipedii může poskytnout určitý pohled na možnosti hlavních rámců botů.

PHP rámce botů
Klíčoví lidé[php 1]NázevVerze PHPposlední aktualizacePoužívá API[php 2]Umožnění odepření přístupuFunkce správcePluginyÚložištěPoznámky
Cyberpower678, Addshore, and Jarry1250Peachy5.2.12015AnoAnoAnoAnoGitHubVelký rámec, v současné době prochází přepisem. Dokumentace v současné době neexistuje, tak požádejte o pomoc w:User:Cyberpower678.
Addshoremediawiki-api-base7.4+2021AnoN/AN/Aextra libsGitHubZákladní knihovna pro interakci s rozhraním MediaWiki vám poskytuje způsoby, jak zvládnout přihlašování, odhlašování a manipulaci s tokeny, stejně jako snadné získávání a odesílání požadavků.
Addshoremediawiki-api7.4+2021AnoNesomeextra libsGitHubNa základě mediawiki-api-base to přidává pokročilejší služby pro API, jako je RevisionGetter, UserGetter, PageDeleter, RevisionPatroller, RevisionSaver atd.
KaspoPhpwikibotNeuvedeno2009ČástečnéNeNeNeGoogle CodePoužívá jednu třídu.
Jarry1250Wikibot52009AnoAnoNeNeenwikiPoužívá výhradně LivingBot. Rozdělení Phpwikibota. Používá jednu třídu.
Foxy LoxyPHPediaWiki52009AnoNeAnoNeSourceForgeRozdělení SxWiki
Nzhamstar, Xymph, WaldyriousWikimate5.3-5.6,
7.x, 8.x
2023AnoNeNeNeGitHubPodporuje hlavní článek a soubor. Autentizace, kontrola existence stránek, čtení a úprava stránek/sekcí. Získávání informací o souborech, stahování a nahrávání souborů. Jeho cílem je snadné použití.
Kaleb HeitzmanMediaWIkiBot52012AnoNeNeNeGitHubPodporuje celé API včetně nahrávání a importu. Podporuje také Semantic MediaWiki. Jedna třída, která vytváří dynamické metody pro práci s libovolným voláním API.
Edward Z. YangWikipedia Bot in PHPNeuvedeno2005NeNeNeNeenwiki"Pravděpodobně zastaralý" zdrojový kód
Cobiwikibot.classes52010AnoAnoNeNeenwikiPoužívané několika velkými roboty (např. ClueBot a SoxBot). Používá několik tříd.
Valerio Bozzolanboz-mw5.62019AnoN/AAnoextra libsGitHubObjektově orientované. 80+ tříd také pro zpracování Wikidat. Inline dokumentace. Podpora pro nahrávání souborů.
  1. Nezahrnuje ty, kteří pracovali na rámcích rozvětvených k vytvoření uvedených rámců.
  2. Kde je to možné. Nezahrnuje nahrávání obrázků a další podobné úlohy, které v současné době rozhraní API nepodporuje.

Python

Python je populární interpretovaný jazyk s objektově orientovanými funkcemi.

Knihovny
Prosím, pomozte aktualizovat tuto tabulku.
Rámce Python Bot
Klíčoví lidé[py 1]NázevVerze Pythonuposlední aktualizacePoužívá API[py 2]Umožnění odepření přístupuFunkce správcePluginyÚložištěPoznámky
xqtPywikibotPython 3.8 nebo vyšší or PyPy2023AnoAnoAnoAno

Nejpoužívanější Python bot framework. Zahrnuje připravené skripty k použití.

MystWikibaseIntegratorPython 3.7 nebo vyšší2022AnoNelze použítAnoNeGitHubPouze pro interakci s instancemi Wikibase, jako jsou Wikidata
Mr.Z-manwikitools22016GitHubNeslučitelný s Pythonem 3. (stažení)
Bryanmwclient2021GitHubRámec založený na API
The Earwigmwparserfromhell2021GitHubPythonový analyzátor pro text MediaWiki
  1. Nezahrnuje ty, kteří pracovali na rámcích rozvětvených k vytvoření uvedených rámců.
  2. Kde je dostupné Nezahrnuje nahrávání obrázků a další podobné úlohy, které v současné době rozhraní API nepodporuje.

Microsoft .NET

Microsoft .NET je sada jazyků včetně C#, C++/CLI, Visual Basic .NET, J#, JScript .NET, IronPython a Windows PowerShell. Často se používá Microsoft Visual Studio integrované vývojové prostředí nebo bezplatné Microsoft Visual Studio Express verze. Pomocí Mono Project mohou programy .NET běžet také na Linux, Unix, BSD, Solaris a Mac OS X pod Windows stejně jako na Mac OS X.

Knihovny:

  • DotNetWikiBot Framework – plnohodnotný klient API na .NET, který umožňuje snadno vytvářet programy a webové roboty pro správu informací na stránkách založených na MediaWiki. Nyní přeloženo do několika jazyků. Podrobná kompilovaná dokumentace je k dispozici v angličtině.
  • Knihovna WikiFunctions .NET – Součástí AWB je knihovna věcí užitečných pro roboty, jako je generování seznamů, načítání/úpravy článků, připojení ke kanálu IRC s posledními změnami a další.

Java

Java programy jsou obecně vyvíjeny s IDE, jako je Eclipse nebo NetBeans. Vývoj pomocí konzoly příkazového řádku (s programy javac a java) je také možností.

Knihovny:

  • Java Wiki Bot Framework – framework bota wiki Java
  • wiki-java – framework wiki bota Java, který je pouze jedním souborem
  • WPCleaner – knihovna používaná nástrojem WPCleaner
  • jwiki – jednoduchý a snadno použitelný framework wiki bota Java

JavaScript (Node.js)

JavaScript je skriptovací jazyk používaný hlavně na webových stránkách, například pro uživatelské skripty přidané na stránky vašeho vector.js nebo monobook.js. Pomocí Node.js je možné použít JavaScript na straně serveru, například pro vývoj botů.

Prosím, pomozte aktualizovat tuto tabulku.
Rámce bota NodeJS
Klíčoví lidé[js 1] Název verze Nodejs poslední aktualizace Používá API[js 2] Umožnění odepření přístupu Funkce správce Balík Úložiště Poznámky
SD0001mwn14+2025AnoAnoAnonpmGitHubVelká knihovna s třídami pro práci s názvy stránek a wikitextem. Funguje také s TypeScript. API založené na slibu (asyncawait). Omezené možnosti analýzy wikitextu.
Dragoniezmwbot-ts14.18.3+2025AnoAnoAnonpmGitHubKnihovna kompatibilní s TypeScript s flexibilní základní třídou a offline analyzátorem wikitextu. Klienti mohou rozšířit jádro a definovat vlastní metody, které vyhovují specifickým potřebám.
kanashimiwikiapi12+2024AnoAnoČástečnénpmGitHubJavaScript MediaWiki API pro node.js s moderním ECMAScript 2016 asyncawait a wikitext parserem.
MediaWiki module2014GitHubPoskytuje framework standardních požadavků (např. přihlášení, odhlášení atd.) a také obecnou metodu wrapper pro MediaWiki API a zahrnuje omezení. Modul lze také přidat na vaši stránku Wikimedia .js a použít jako knihovnu pro volání JS na wiki.
  1. Nezahrnuje ty, kteří pracovali na rámcích rozvětvených k vytvoření uvedených rámců.
  2. Kde je dostupné Nezahrnuje nahrávání obrázků a další podobné úlohy, které v současné době rozhraní API nepodporuje.


Ruby

Ruby je populární dynamický, objektově orientovaný programovací jazyk.

Knihovny:

  • MediaWiki::Butt - Ruby framework pro API v aktivním vývoji. Testováno s verzemi tak aktuálními, jako je CurseGamepedia.
  • mediawiki/ruby/api, Ruby API klientská knihovna. Poslední aktualizace z prosince 2017, již není udržována, ale stále funguje.
  • MediaWiki::Gateway – Ruby framework pro API. Poslední aktualizace v lednu 2016. Již není v aktivním vývoji, testováno až do MediaWiki 1.22, kompatibilní s wikinami Wikimedie. Není známo, zda stále funguje.
  • wikipedia-client - Ruby framework využívající API. Poslední aktualizace v březnu 2018. Není známo, zda stále funguje.

Common Lisp

  • CL-MediaWiki implementuje MediaWiki API jako balíček Common Lisp. Plánuje se použití JSON jako datového formátu dotazu. Podporuje maxlag a assertion.

Haskell

VBScript

VBScript je skriptovací jazyk založený na programovacím jazyce Visual Basic. Neexistují žádné publikované rámce botů pro VBScript, ale některé příklady botů, které jej používají, lze vidět níže:

Příklady:

Bash

Bash je Unix shell.

Category:Bots/cs
Category:Bots/cs