WikiDer > Yordam: Bot yaratish - Vikipediya

Help:Creating a bot - Wikipedia

Robotlar yoki botlar Vikipediya (va boshqa Vikimedia loyihalari) bilan o'zaro aloqada bo'ladigan avtomatik jarayonlar bo'lib, go'yo ular inson muharriri kabi. Ushbu sahifada Vikimedia loyihalarida foydalanish uchun qanday qilib bot yaratilishini tushuntirishga harakat qilingan va bularning aksariyati MediaWiki-ga asoslangan boshqa vikilarga o'tkazilishi mumkin. Tushuntirish asosan avvalgi dasturlash tajribasiga ega bo'lganlarga, lekin bu bilimlarni Vikipediya botini yaratishda qanday ishlatishni bilmayotganlarga qaratilgan.

Nima uchun bot yaratishim kerak?

Botlar vazifalarni avtomatlashtirishi va ularni odamlarga qaraganda tezroq bajarishi mumkin. Agar sizda oddiy vazifa bo'lsa, uni ko'p marta bajarishingiz kerak (masalan, qo'shish uchun misol bo'lishi mumkin) shablon 1000 sahifali toifadagi barcha sahifalarga), demak, bu odamga qaraganda botga mos keladigan vazifadir.

Bot yaratishdan oldin mulohazalar

Mavjud botdan bot ishini so'rash odatda ancha sodda. Agar sizda faqat davriy so'rovlar bo'lsa yoki dasturlash sizga noqulay bo'lsa, bu odatda eng yaxshi echimdir. Ushbu so'rovlar quyidagi manzilda amalga oshirilishi mumkin Vikipediya: Bot so'rovlari. Bundan tashqari, har bir kishi uchun bir qator vositalar mavjud. Ularning aksariyati Mediawiki-ga xos xususiyatlarga ega bo'lgan kengaytirilgan veb-brauzerlar shaklida bo'ladi. Ulardan eng mashhuri AutoWikiBrowser (AWB), Vikipediya va boshqa Vikimedia loyihalarini tahrirlashda yordam berish uchun maxsus ishlab chiqilgan brauzer. Asboblarning to'liq to'liq ro'yxati bu erda joylashgan Vikipediya: Asboblar / tahrirlash vositalari. AWB kabi vositalar ko'pincha dasturlashni juda kam yoki umuman tushunmagan holda ishlatilishi mumkin.

Agar siz o'zingizning botingiz talablaringizning chastotasi yoki yangiligi tufayli sizga kerak bo'lsa, uni noldan yozishingiz shart emas. Allaqachon mavjud Vikipediyada ishlaydigan botlarning soni va ushbu botlarning aksariyati o'zlarining manba kodlarini nashr etadilar, ba'zida ularni ishlab chiqish uchun qo'shimcha vaqt talab qilinmaydi. Bundan tashqari, bir qator standart bot ramkalar mavjud. Mavjud botni o'zgartirish yoki ramkadan foydalanish rivojlanish vaqtini juda tezlashtiradi. Bundan tashqari, ushbu kod bazalari umumiy foydalanishda bo'lganligi va jamoat loyihalari saqlanib qolganligi sababli, ushbu ramkalar asosida foydalanish uchun tasdiqlangan botlarni olish ancha oson. Ushbu ramkalarning eng mashhuri va keng tarqalgani Pivikibot (PWB), ichida yozilgan bot ramkasi Python. U yaxshilab hujjatlashtirilgan va sinovdan o'tgan va ko'plab standartlashtirilgan Pywikibot skriptlari (bot ko'rsatmalari) allaqachon mavjud. Bot ramkalarining boshqa misollarini topish mumkin quyida. Ushbu bot ramkalaridan ba'zilari, masalan, PWB uchun, skriptlar bilan umumiy tanishish bu botni muvaffaqiyatli ishlashi uchun zarur bo'lgan narsadir (ushbu ramkalarni muntazam yangilab turish muhimdir).

Yangi bot yozish muhim dasturlash qobiliyatini talab qiladi. Butunlay yangi bot muntazam ishlashi uchun tasdiqlanishidan oldin uni sinovdan o'tkazish kerak. Muvaffaqiyatli bot yozish uchun rejalashtirish juda muhimdir. Quyidagi fikrlar muhim:

  • Bot qo'lda yordam beradimi yoki to'liq avtomatlashtiriladimi?
  • Siz botni yakka o'zi yaratasizmi yoki boshqa dasturchilar yordamidami?
  • Bot so'rovlari, tahrirlari yoki boshqa amallari qayd etiladimi? Agar shunday bo'lsa, jurnallar mahalliy ommaviy axborot vositalarida yoki viki-sahifalarda saqlanadimi?
  • Bot veb-brauzer ichida ishlaydimi (masalan, Javascriptda yozilgan) yoki bu mustaqil dastur bo'ladimi?
  • Agar bot mustaqil dastur bo'lsa, u sizning mahalliy kompyuteringizda yoki kabi uzoq serverda ishlaydi Toolforge?
  • Agar bot uzoq serverda ishlasa, boshqa tahrirlovchilar botni ishlata oladimi yoki uni ishga tushirishni boshlaydilarmi?

Vikipediya boti qanday ishlaydi?

Amaliyotga umumiy nuqtai

Wikieditcycle.png

Xuddi inson muharriri singari, Vikipediya boti ham Vikipediya sahifalarini o'qiydi va o'zgartirishlarni kiritish kerak deb o'ylagan joyda o'zgarishlar kiritadi. Farqi shundaki, garchi botlar odamlarga qaraganda tezroq va tez charchashga moyil bo'lsalar ham, ular biznikidek yorqinroq joyda emas. Botlar osonlikcha aniqlangan naqshlarga ega bo'lgan takrorlanadigan vazifalarni yaxshi bajaradi, bu erda kam sonli qarorlar qabul qilinishi kerak.

Eng odatiy holatda, bot o'z hisobiga kirib, brauzer singari Vikipediyadan sahifalarni so'raydi - garchi u sahifani ekranda ko'rsatmasa ham, xotirada ishlasa ham - keyin dasturiy tekshiradi. har qanday o'zgartirish kiritilishi kerakligini ko'rish uchun sahifa kodi. Keyinchalik, brauzer qanday bo'lsa, shunga o'xshash har qanday tahrirlarni amalga oshiradi va yuboradi.

Botlar sahifalarga odamlar singari kirish huquqiga ega bo'lganligi sababli, botlar odamlar foydalanuvchilari kabi bir xil qiyinchiliklarga duch kelishlari mumkin. Ular tahrirdagi to'qnashuvlarga tushib qolishlari, sahifalar vaqti tugashi yoki boshqa kutilmagan asoratlar paytida sahifalarni talab qilish yoki tahrirlash paytida duch kelishlari mumkin. Bot tomonidan amalga oshirilgan ish hajmi tirik odam bajarganidan kattaroq bo'lgani uchun, bot bu muammolarga duch kelishi ehtimoli katta. Shunday qilib, bot yozishda ushbu holatlarni hisobga olish muhimdir.

Botlar uchun API-lar

Vikipediya sahifalariga o'zgartirish kiritish uchun bot Vikipediyadan sahifalarni olib, tahrirlarni qaytarib yuborishi shart. Bir nechtasi bor amaliy dasturlash interfeyslari Shu maqsadda mavjud bo'lgan (API).

  • MediaWiki API (api.php). Ushbu kutubxona, so'rovlar va o'zgartirishlarni yuborish uchun botlar kabi avtomatlashtirilgan jarayonlarga ruxsat berish uchun maxsus yozilgan. Ma'lumotlar qaytariladi JSON format (qarang chiqish formatlari batafsil ma'lumot uchun).
    Holat: MediaWiki-ning o'rnatilgan xususiyati, barcha Vikimedia serverlarida mavjud. Boshqa Vikimedia bo'lmagan vikilar yozishga kirishni o'chirib qo'yishi yoki cheklashlari mumkin.
    Bundan tashqari API sandbox api.php xususiyatlarini sinab ko'rmoqchi bo'lganlar uchun.
  • Maxsus: eksport sahifa tarkibini XML shaklida ommaviy eksport qilish uchun foydalanish mumkin. Qarang Qo'llanma: Maxsus parametrlar: Eksport dalillar uchun;
    Holat: MediaWiki-ning o'rnatilgan xususiyati, barcha Vikimedia serverlarida mavjud.
  • Xom (Wikitext) sahifani qayta ishlash: a yuborish harakat = xom yoki a aksiya = xom va shablonlar = kengaytirish Index.php-ga GET so'rovi sahifaning qayta ishlanmagan wikitext manba kodini beradi. Bilan API so'rovi action = query & prop = reviews & rvprop = content yoki action = query & prop = reviews & rvprop = content & rvexpandtemplates = 1 taxminan ekvivalenti va qo'shimcha ma'lumot olish imkoniyatini beradi. Masalan: https://en.wikipedia.org/w/index.php?title=Yordam: Creating_a_bot&action=raw
    Holat: MediaWiki-ning o'rnatilgan xususiyati, barcha Vikimedia serverlarida mavjud.

Ba'zi Vikipediya veb-serverlari siqilgan so'rovlarni berish uchun tuzilgan (gzip) tarkib. Buni HTTP so'rovining sarlavhasiga "Qabul qilish-kodlash: gzip" qatorini kiritish orqali amalga oshirish mumkin; agar HTTP javob sarlavhasida "Content-Encoding: gzip" bo'lsa, hujjat gzip shaklida, aks holda u odatdagi siqilmagan shaklda bo'ladi. MediaWiki dasturiga emas, balki veb-serverga xos ekanligini unutmang. MediaWiki-ni ishlatadigan boshqa saytlarda bu xususiyat bo'lmasligi mumkin. Agar siz mavjud bot ramkasidan foydalanayotgan bo'lsangiz, u past darajadagi operatsiyalarni bajarishi kerak.

Kirish

Tahrirlash uchun tasdiqlangan botlarga kirish kerak. Garchi bot o'qish so'rovlarini tizimga kirmasdan amalga oshirishi mumkin bo'lsa-da, testlarni yakunlagan botlar barcha harakatlar uchun tizimga kirishlari kerak. Hisobga bot bayrog'i bilan kirgan botlar Mediawiki API (api.php) dan har bir so'rov uchun ko'proq natijalar olishlari mumkin. Ko'pgina bot ramkalar tizimga kirish va cookie-fayllarni avtomatik ravishda boshqarishi kerak, ammo agar siz mavjud ramkadan foydalanmasangiz, quyidagi bosqichlarni bajarishingiz kerak bo'ladi.

Xavfsizlik uchun kirish ma'lumotlari yordamida uzatilishi kerak HTTP POST usul. Chunki parametrlari HTTP GET so'rovlar URL manzilida osongina ko'rinadi, GET orqali kirish o'chirilgan.

-Dan foydalangan holda botga kirish uchun MediaWiki API, ikkita so'rov kerak:

So'rov 1 - bu kirish belgisini olish uchun GET so'rovi
2-so'rov - bu kirishni yakunlash uchun POST

bu erda TOKEN oldingi natijadagi belgidir. Oldingi so'rovdagi HTTP cookies-fayllari ikkinchi so'rov bilan ham yuborilishi kerak.

Muvaffaqiyatli kirish urinishi Vikimedia serverini bir nechta sozlashga olib keladi HTTP cookie-fayllari. Bot ushbu cookie-fayllarni saqlab qo'yishi va har bir so'rov yuborganida ularni qaytarib yuborishi kerak (bu tahrirlash uchun juda muhimdir). Ingliz Vikipediyasida quyidagi cookie-fayllardan foydalanish kerak: enwikiUserID, enwikiTokenva enwikiUserName. The enwiki_session cookie-fayl aslida tahrir yuborishi yoki biron bir o'zgartirish kiritishi kerak, aks holda MediaWiki: sessiyani ko'rib chiqish muvaffaqiyatsiz tugadi xato xabari qaytariladi.

Asosiy hisob qaydnomasiga "action = login" orqali kirish bekor qilindi va ogohlantirishsiz ishlashni to'xtatishi mumkin. "Action = login" bilan kirishni davom ettirish uchun qarang Maxsus: BotPasswords.

Tahrirlash; nishonlarni tahrirlash

Vikipediya tizimidan foydalanadi nishonlarni tahrirlash Vikipediya sahifalariga tahrir qilish, shuningdek, qaytarib olish kabi mavjud tarkibni o'zgartiradigan boshqa operatsiyalar uchun. Token uzun o'naltı raqamga o'xshaydi va undan keyin '+ ' keladi, masalan:

d41d8cd98f00b204e9800998ecf8427e +

Tahrirlash belgilarining roli "tahrirni o'g'irlashni" oldini olishdan iborat bo'lib, foydalanuvchilar aldanib bitta havolani bosish orqali tahrir qilishadi.

Tahrirlash jarayoni ikkita HTTP so'rovini o'z ichiga oladi. Birinchidan, tahrirlash ma'lumoti uchun so'rov yuborilishi kerak. So'ngra, yangi olingan tahrirlash belgisi bilan birga sahifaning yangi tarkibini yuboradigan ikkinchi HTTP so'rovi yuborilishi kerak. Bitta HTTP so'rovida tahrir qilish mumkin emas. Tizimga kirish belgisi tizimga kirgan seans davomida bir xil bo'lib qoladi, shuning uchun tahrirlash belgisi faqat bir marta olinishi kerak va undan keyingi barcha tahrirlar uchun foydalanish mumkin.

Tahrirlash belgisini olish uchun quyidagi amallarni bajaring:

Agar bot qabul qiladigan tahrirlash belgisida o'n oltinchi qator mavjud bo'lmasa (ya'ni, tahrirlash belgisi shunchaki '+ '), keyin bot tizimga kirmagan bo'lishi mumkin. Bunga bir qator omillar sabab bo'lishi mumkin: serverda autentifikatsiya qilishda muvaffaqiyatsizlik, ulanishning uzilishi, qandaydir tanaffus yoki to'g'ri cookie-fayllarni saqlash yoki qaytarishda xato. Agar dasturlashda xatolik yuz bermasa, kirish cookie-fayllarini yangilash uchun qayta kiring. Botlarni kerak foydalanish O'zgartirish kengaytmasini tasdiqlang ular tizimga kirganligiga ishonch hosil qilish uchun.

Nizolarni tahrirlash

Bitta sahifada bir nechta takrorlash urinishlari amalga oshirilganda tahrirlash nizolari yuzaga keladi. Deyarli har bir bot iroda oxir-oqibat u yoki bu kabi tahrirdagi to'qnashuvga tushib qoladi va ushbu masalalarni sinab ko'rish va joylashtirish uchun qandaydir mexanizmni o'z ichiga olishi kerak.

Mediawiki API (api.php) dan foydalanadigan botlar tahrirlash belgisini va bilan birga olishlari kerak starttimestamp va oxirgi qayta ko'rib chiqilgan "tayanch" vaqt tamg'asi, oldin tahrirga tayyorgarlik jarayonida sahifa matnini yuklash; prop = info | revizyonlar bir so'rovda belgi va sahifa tarkibini olish uchun ishlatilishi mumkin (misol). Tahrirni yuborayotganda starttimestamp va basetimestamp atributlari va serverning javoblarini xatolar belgisi uchun tekshiring. Qo'shimcha ma'lumot uchun qarang mw: API: Tartibga solish - Sahifalarni yaratish va tahrirlash.

Umuman aytganda, agar tahrir botni yakunlay olmasa, tahrirning hali ham mos ekanligiga ishonch hosil qilish uchun sahifani qayta tahrir qilib, yangi tahrir qilishdan oldin tekshirishi kerak. Bundan tashqari, agar bot o'zgarishni qayta yuborish uchun sahifani qayta tekshirsa, cheksiz tsiklga olib kelishi mumkin bo'lgan xatti-harakatlardan va hatto shunga o'xshash xatti-harakatlardan saqlanish kerak. urushni tahrirlash.

Botni yaratish jarayoniga umumiy nuqtai

Aslida botni kodlash yoki yozish botni rivojlantirishning faqat bir qismidir. Sizning botingiz amal qilishiga ishonch hosil qilish uchun odatda quyida keltirilgan rivojlanish tsiklini bajarishingiz kerak Vikipediyaning bot siyosati. Siyosatga rioya qilmaslik botingiz ma'qullanmasligiga yoki Vikipediyani tahrirlashiga to'sqinlik qilishga olib kelishi mumkin.

Vikipediya botlarini ishlab chiqish tsikliga umumiy nuqtai

Fikr

  • Vikipediya botini yaratishda birinchi vazifa talablarni chiqarib tashlash yoki g'oyani taklif qilishdir. Agar siz botni nima uchun yozish haqida tasavvurga ega bo'lmasangiz, unda g'oyalarni olishingiz mumkin bot tomonidan bajariladigan ish uchun so'rovlar.
  • Mavjud bot sizning botingiz bajarishi kerak bo'lgan narsani qilmaganligiga ishonch hosil qiling. Bot tomonidan qanday vazifalar bajarilayotganini bilish uchun qarang hozirda ishlaydigan botlarning ro'yxati.

Texnik xususiyatlari

  • Texnik xususiyatlari yozilishi kerak bo'lgan dasturiy ta'minotni aniq tavsiflash vazifasi, ehtimol qat'iy tarzda. Siz nima qilishni xohlayotganingiz haqida batafsil taklif bilan chiqishingiz kerak. Ushbu taklifni ba'zi tahrirlovchilar bilan muhokama qilishga harakat qiling va mulohazalar asosida uni yaxshilang. Boshqa tahrirlovchilarning fikrlarini qo'shib, hatto ajoyib g'oyani ham yaxshilash mumkin.
  • Eng oddiy shaklda siz ko'rsatgan bot quyidagi mezonlarga javob berishi kerak:
  • Bot zararsizdir (u ensiklopediyaning uzluksiz ishlashiga xalaqit beradigan tahrirlarni kiritmasligi kerak)
  • Bot foydalidir (u foydali xizmatni inson muharriridan ko'ra samaraliroq taqdim etadi)
  • Bot server resurslarini isrof qilmaydi.

Dastur arxitekturasi

  • Haqida o'ylamoq Qanaqasiga Siz uni yaratishingiz va qaysi dasturlash tillari va vositalaridan foydalanishingiz mumkin. Arxitektura dasturiy ta'minot tizimining mahsulot talablariga javob berishiga ishonch hosil qilish bilan bir qatorda kelgusidagi talablarni hal qilishni ta'minlash bilan bog'liq. Ba'zi dasturlash tillari ba'zi bir vazifalarga boshqalarga qaraganda yaxshiroq mos keladi, batafsil ma'lumot uchun qarang § dasturlash tillari va kutubxonalari.

Amalga oshirish

Amalga oshirish (yoki kodlash) dizayn va rejalashtirishni kodga aylantirishni o'z ichiga oladi. Bu dasturiy ta'minot muhandisligi ishining eng aniq qismi bo'lishi mumkin, ammo bu eng katta qismi bo'lishi shart emas. Amalga oshirish bosqichida quyidagilar kerak:

  • Botingiz uchun hisob yarating. Bosing Bu yerga qayd yozuvini yaratish uchun tizimga kirganda, uni siznikiga bog'lash. (Agar siz bot-qayd yozuvini tizimga kirishda yaratmasangiz, u iloji boricha bloklanishi mumkin qo'g'irchoq yoki egalik huquqini tasdiqlamaguncha ruxsatsiz bot)
  • Botingiz uchun foydalanuvchi sahifasini yarating. Sizning botingizdagi tahrirlar o'zingizning hisob qaydnomangiz ostida amalga oshirilmasligi kerak. Sizning botingiz o'z foydalanuvchi nomi va parol bilan o'z qayd yozuviga muhtoj bo'ladi.
  • Xuddi shu ma'lumotlarni botning foydalanuvchi sahifasiga qo'shing. Har bir funktsiya uchun tasdiqlash sahifasiga (tasdiqlangan yoki tasdiqlanmagan) havola qo'shilsa yaxshi bo'ladi.

Sinov

O'zingiz rivojlanayotgan botni sinovdan o'tkazishning yaxshi usuli - bu jonli vikini tahrir qilishdan ko'ra, sahifaga kiritilgan o'zgarishlarni (agar mavjud bo'lsa) ko'rsatishdir. Ba'zi bot ramkalar (masalan pywikibot) farqlarni ko'rsatish uchun oldindan kodlangan usullarga ega. Davomida tasdiqlash jarayoni, botga sinov muddati beriladi (odatda tahrirlashlar soni yoki kunlari cheklangan holda), unda aniq sozlash va xatolarni o'chirish uchun tahrirlash mumkin. Sinov muddati tugagandan so'ng, agar hamma narsa rejaga muvofiq bo'lsa, bot to'liq hajmda ishlashga ruxsat olishi kerak.

Hujjatlar

Muhim (va ko'pincha e'tibordan chetda qoldiradigan) vazifa hujjatlashtirish kelajakda parvarish qilish va takomillashtirish maqsadida botingizning ichki dizayni. Agar siz botingizning klonlashiga ruxsat bermoqchi bo'lsangiz, bu juda muhimdir. Ideal holda, siz botingizning manba kodini foydalanuvchi sahifasida yoki qayta ko'rib chiqishni boshqarish tizimida joylashtirishingiz kerak (qarang # Ochiq kodli botlar) agar siz boshqalar uning klonlarini ishlatishini xohlasangiz. Foydalanish qulayligi uchun ushbu kod yaxshi hujjatlashtirilgan bo'lishi kerak (odatda sharhlar yordamida).

So'rovlar / shikoyatlar

O'zingizning foydalanuvchi munozarasi sahifangizda, xususan, potentsial sezgir sohada ishlayotgan bo'lsa, sizning botingiz haqidagi savollarga yoki e'tirozlarga javob berishga tayyor bo'lishingiz kerak. adolatli foydalanish tasvirni tozalash.

Texnik xizmat

Ta'minlash va yangi topilgan xatolar yoki yangi talablarni engish uchun botingizni oshirish dasturiy ta'minotning dastlabki ishlab chiqilishidan ancha ko'proq vaqt talab qilishi mumkin. Xizmatni engillashtirish uchun kodingizni boshidan hujjatlashtiring.

Tasdiqlangan botlarning asosiy funktsiyalari o'zgarishi kerak tasdiqlangan.

Botni boshqarish bo'yicha umumiy ko'rsatmalar

Sizning botingizni ishlab chiqishda e'tiborga olish kerak bo'lgan asosiy fikrlarni o'z ichiga olgan rasmiy bot siyosatidan tashqari, sizning botingizni ishlab chiqishda e'tiborga olish kerak bo'lgan yana bir qancha umumiy maslahat nuqtalari mavjud.

Botning eng yaxshi amaliyotlari

  • Maxsus sozlamani o'rnating Foydalanuvchi-agent sizning botingiz uchun sarlavha Vikimedia foydalanuvchi-agent siyosati. Agar bunday qilmasangiz, botingiz xatolarga duch kelishi va server darajasida texnik xodimlar tomonidan bloklanishi mumkin.
  • Dan foydalaning maxlag parametri maksimal 5 soniya kechikish bilan. Bu serverning yuki kam bo'lganida botning tez ishlashini va serverning yuki yuqori bo'lganida botni bosishini ta'minlaydi.
    • Agar maxlagni qo'llab-quvvatlamaydigan ramkada bot yozsangiz, jami so'rovlarni cheklang (so'rovlarni birgalikda o'qing va yozing) 10 daqiqadan oshmasligi kerak.
  • Dan foydalaning API iloji boricha va so'rovlar chegaralarini server ruxsat beradigan eng katta qiymatlarga qo'ying, so'rovlarning umumiy sonini minimallashtirish uchun.
  • Server vaqtida tahrirlash (yozish) so'rovlari o'qish so'rovlariga qaraganda qimmatroq. Edit-light bo'ling va tahrirlarni minimal darajada ushlab turish uchun kodingizni yarating.
    • Tahrirlarni birlashtirishga harakat qiling. Bitta katta tahrir 10 ta kichik tahrirdan yaxshiroqdir.
  • Yoqish HTTP doimiy ulanishlari va siqilish iloji bo'lsa, HTTP mijozlar kutubxonangizda.
  • Ko'p yo'nalishli so'rovlar qilmang. Boshqasini boshlashdan oldin bitta server so'rovi bajarilishini kuting.
  • Serverdan xatolar kelib chiqqandan so'ng orqaga qayting. Qisqichbaqasimon tanaffuslar kabi xatolar ko'pincha serverning og'ir yuklanishidan dalolat beradi. Foydalanish takroriy so'rovlar o'rtasida tobora uzoqroq kechikishlar ketma-ketligi.
  • Dan foydalaning tasdiqlash botingiz tizimga kirganligini ta'minlash uchun.
  • Katta avtomatlashtirilgan ishlarni bajarishdan oldin kodingizni yaxshilab sinab ko'ring. Barcha tahrirlarni mukammalligini tekshirish uchun ularni sinab ko'rishda alohida ko'rib chiqing.

Amalga oshirishni o'ylashingiz kerak bo'lgan umumiy bot xususiyatlari

Qo'lda yordam

Agar sizning botingiz kontekstni baholash yoki baholashni talab qiladigan biror narsani qilayotgan bo'lsa (masalan, imlovni tuzatish), unda siz o'zingizning botingizni qo'lda yaratishni o'ylab ko'rishingiz kerak, demak, inson barcha tahrirlarni saqlashdan oldin tekshiradi. Bu bot tezligini sezilarli darajada pasaytiradi, ammo xatolarni ham sezilarli darajada kamaytiradi.

Botni o'chirib qo'yish

Sizning botingizni tezda o'chirib qo'yish oson bo'lishi kerak. Agar sizning botingiz yomonlashsa, uni tozalash sizning zimmangizda! Agar siz uning munozarasi sahifasida xabar qoldirilgan bo'lsa, xabarni uning faoliyatiga qarshi shikoyat bo'lishi mumkin deb taxmin qilgan holda, botni ishga tushirishni rad etishingiz mumkin; buni API yordamida tekshirish mumkin meta = userinfo so'rov (misol). Yoki o'zgartirilganda botni o'chirib qo'yadigan sahifangiz bo'lishi mumkin; buni har bir tahrirlashdan oldin sahifa tarkibini yuklash orqali tekshirish mumkin.

Imzo

Xuddi inson singari, agar sizning botingiz Vikipediyadagi munozarali sahifaga tahrir qilsa, u o'z postiga to'rtta tild bilan imzo chekishi kerak (~~~~). Imzolar tegishli faqat munozara uchun ishlatiladigan loyiha sahifalari bundan mustasno (masalan, o'chirish uchun maqolalar).

Bot bayrog'i

Botning tahriri quyidagi manzilda ko'rinadi Maxsus: So'nggi o'zgarishlar, agar tahrirlar botni ko'rsatish uchun o'rnatilmagan bo'lsa. Bot tasdiqlangandan va bot bayrog'iga ruxsat berilgandan so'ng, API qo'ng'irog'iga "bot-True" qo'shilishi mumkin - qarang mw: API: # Parametrlarni tahrirlash botdagi tahrirlarni yashirish uchun Maxsus: So'nggi o'zgarishlar. Python-da mwclient yoki wikitools-dan foydalanib, keyin qo'shib qo'ying Bot = rost tahrirlash / saqlash buyrug'i tahrirlashni bot tahriri sifatida o'rnatadi - masalan. PageObject.edit (matn = pagetext, bot = True, xulosa = sahifalar xulosasi).

Ochiq kodli botlar

Ko'pgina bot operatorlari kodlarini ochiq manba qilishni tanlaydilar va vaqti-vaqti bilan bu juda murakkab botlar uchun tasdiqlashdan oldin talab qilinishi mumkin. Kodingizni ochiq manba qilishning bir qancha afzalliklari bor:

  • Boshqalarga sizning kodingizni potentsial xatolar uchun ko'rib chiqishga imkon beradi. Nasrdagi kabi, ko'pincha kod muallifi uni etarli darajada ko'rib chiqishi qiyin.
  • Boshqalar sizning kodlaringizdan o'z botlarini yaratish uchun foydalanishlari mumkin. Bot yozishni yangi boshlagan foydalanuvchi sizning kodingizdan o'z botlari uchun namuna yoki shablon sifatida foydalanishi mumkin.
  • Bu dalda beradi xavfsizlik bo'yicha yaxshi amaliyot, dan ko'ra qorong'ilik orqali xavfsizlik.
  • Agar siz loyihadan voz kechsangiz, bu boshqa foydalanuvchilarga yangi kod yozmasdan bot vazifalaringizni bajarishga imkon beradi.

Ochiq kodli kod, kamdan-kam hollarda talab qilinadigan bo'lsa-da, odatda Vikipediyaning ochiq va shaffof xususiyatlariga muvofiq ravishda rag'batlantiriladi.

Kodni baham ko'rishdan oldin, parollar kabi maxfiy ma'lumotlar, hammaga ma'lum bo'lmagan faylga ajratilganligiga ishonch hosil qiling.

O'zlarining kodlarini ochishni istagan foydalanuvchilar uchun juda ko'p imkoniyatlar mavjud. Kodni bot foydalanuvchi maydonining pastki sahifasida joylashtirish, agar avtomatlashtirilmagan bo'lsa va Vikipediyaning litsenziyalash shartlari bo'yicha kodning siz ko'rsatishi mumkin bo'lgan boshqa shartlarga qo'shimcha ravishda ko'p litsenziyalanishiga olib kelishi mumkin bo'lsa, uni saqlash qiyin bo'lishi mumkin. A dan foydalanish yaxshiroq echimdir qayta ko'rib chiqishni boshqarish tizimi kabi SVN, Git, yoki Mercurial. Vikipediyada boshqasini taqqoslaydigan maqolalar mavjud dasturiy ta'minot imkoniyatlari va kodlarni joylashtirish uchun veb-saytlar, ularning aksariyati hech qanday narxga ega emas.

Dasturlash tillari va kutubxonalar

Botlarni deyarli har qanday dasturlash tilida yozish mumkin. Tilni tanlash bot muallifining tajribasi va afzalliklariga hamda botni rivojlantirishga tegishli kutubxonalar mavjudligiga bog'liq. Quyidagi ro'yxatda botlar uchun odatda ishlatiladigan ba'zi tillar mavjud:

Ajoyib

GNU Awk kichik va katta hajmdagi botlar, shu jumladan OAuth uchun oson til.

Perl

Agar veb-brauzerda joylashgan bo'lsa, siz o'zingizning dasturingizni ishga tushirishni boshlashingiz va u orqali ishlayotgan vaqtda o'zingizning dasturingiz bilan interfeys qilishingiz mumkin Umumiy shlyuz interfeysi brauzeringizdan. Agar sizning Internet-provayderingiz sizga veb-bo'sh joyni taqdim qilsa, Perl-dasturlarini ishga tushirishingiz mumkin bo'lgan veb-serverda perl qurilishiga kirish imkoniyatingiz katta.

Kutubxonalar:

  • MediaWiki :: API - MediaWiki-ga asoslangan saytlardan ma'lumotlarni tahrir qilish va chiqarishni avtomatlashtirishga imkon beruvchi API uchun asosiy interfeys.
  • MediaWiki :: Bot - Perlda yozilgan juda to'liq MediaWiki bot ramkasi. MediaWiki :: API-dan yuqori darajadagi abstraktlikni ta'minlaydi. Plaginlar administrator va styuard funksiyasini ta'minlaydi. Hozirda qo'llab-quvvatlanmaydi.

PHP

PHP botlarni dasturlash uchun ham ishlatilishi mumkin. MediaWiki-ning ishlab chiquvchilari PHP-ni yaxshi bilishadi, chunki bu MediaWiki-dagi til va uning kengaytmalari yozilgan. PHP sizning botingizga veb-formatli interfeysni taqdim etishni istasangiz, bu juda yaxshi tanlovdir. Masalan, siz toifalarni qayta nomlash uchun bot yaratmoqchi edingiz deylik. Siz HTML shaklini yaratishingiz mumkin, unda siz toifaning joriy va kerakli nomlarini yozasiz. Shakl yuborilganda, sizning botingiz ushbu ma'lumotni o'qishi mumkin, so'ngra barcha toifadagi maqolalarni tahrir qilib, kerakli toifaga o'tkazishi mumkin. (Shubhasiz, forma interfeysiga ega bo'lgan har qanday bot, qandaydir tarzda tasodifiy veb-surferlardan himoyalangan bo'lishi kerak.)

The PHP bot funktsiyalari jadval asosiy bot ramkalarining imkoniyatlari haqida bir oz tushuncha berishi mumkin.

Hozirgi PHP bot ramkalari
Asosiy odamlar[php 1]IsmPHP versiyasiOxirgi yangilanishAPI-dan foydalanadi[php 2]Istisnoga mos keladiAdministrator vazifalariPlaginlarOmborIzohlar
Foydalanuvchi: Cyberpower678, Foydalanuvchi: Addshoreva Foydalanuvchi: Jarry1250Shaftoli5.2.12017HaHaHaHaGitHubHozirda qayta yozilayotgan katta ramka. Hujjatlar hozirda mavjud emas, shuning uchun poke Foydalanuvchi: Cyberpower678 yordam uchun.
Foydalanuvchi: Addshoremediawiki-api-base5.3–72018HaYo'qYo'qqo'shimcha liblarGitHubMediawiki api bilan o'zaro aloqalar uchun asosiy kutubxona sizga kirish, chiqish va tokenlar bilan ishlash, shuningdek so'rovlarni osongina olish va yuborish usullarini taqdim etadi.
Foydalanuvchi: Addshoremediawiki-api5.32019HaYo'qbirozqo'shimcha liblarGitHubMediawiki-api-bazasi ustiga o'rnatilgan bu api uchun yanada rivojlangan xizmatlarni qo'shadi, masalan RevisionGetter, UserGetter, PageDeleter, RevisionPatroller, RevisionSaver va boshqalar. yuklangan yuklash.
Foydalanuvchi: nzhamstarVikipediya5.3.22019HaYo'qYo'qYo'qGitHubAsosiy maqola va fayllarni qo'llab-quvvatlaydi. Autentifikatsiya, sahifalar mavjudligini tekshirish, sahifalarni / bo'limlarni o'qish va tahrirlash. Fayl ma'lumotlarini olish, fayllarni yuklab olish va yuklash. Sinovdan o'tgan va ishlaydigan. Foydalanish oson bo'lishi kerak.
Grigor GachevApibot5.12015HaHaHaHawiki-daMW 1.21 gacha bo'lgan to'liq API qo'llab-quvvatlashi, doimiy ulanishlar, gipslangan xferlar, HTTPS, HTTP auth, GET saralash, avtomatik sayt / user / paraminfo keshlash va foydalanish, sahifa botlarini chiqarib tashlashga muvofiqligi, 1000 funktsiyaga yaqin, JB qo'llab-quvvatlashi va boshqalar. Osonlik bilan kengaytiriladigan modulli tuzilish. UNIX-ga o'xshash "yig'ish liniyasi" ramkasi. AGPL 3.0 yoki undan keyingi versiyasi.
Kris Gbotclasses.php
botclasses.php
52020
2019
HaHaHaYo'qwiki-da
GitHub
Eski wikibot.classs vilkasi (tomonidan ishlatilgan ClueBot va SoxBot). 2010 va 2015 API o'zgarishlar uchun yangilandi. Faylni yuklashni qo'llab-quvvatlaydi.
  1. ^ Ro'yxatdagi ramka yaratish uchun mo'ljallangan ramkalar ustida ishlaganlar kirmaydi.
  2. ^ Mumkin bo'lgan joyda. Hozirda API tomonidan qo'llab-quvvatlanmaydigan rasmlarni yuklash va boshqa shu kabi vazifalar bundan mustasno.

Python

Kutubxonalar:

  • Pivikibot - Ehtimol, eng ko'p ishlatiladigan bot ramkasi.
  • ceterach - MediaWiki bilan ishlash uchun interfeys
  • wikitools- Python-2 faqat MediaWiki API-dan faqat ma'lumotlar olish va tahrirlash uchun foydalanadigan, foydalanadigan va qo'llab-quvvatlaydigan engil botli ramka. Janob Z-man (yuklamalar)
  • mwclient- tomonidan qo'llab-quvvatlanadigan API-ga asoslangan ramka Bryan
  • mwparserfromhell - tomonidan qo'llab-quvvatlanadigan vikitekstni tahlil qiluvchi Earwig
  • pymediawiki - Pythonda faqat o'qish uchun mo'ljallangan MediaWiki API-ning o'rami, ishlatish uchun oddiy.

MATLAB

  • MatWiki - faqat bot-login va semantik #ask so'rovlarini qo'llab-quvvatlovchi dastlabki (2019 yil fevral holatiga) MATLAB R2016b (9.1.x) mijozi.

Microsoft .NET

Microsoft .NET o'z ichiga olgan tillar to'plamidir C #, C ++ / CLI, Visual Basic .NET, J #, JScript .NET, IronPythonva Windows PowerShell. Foydalanish Mono loyihasi, .NET dasturlari ham ishlashi mumkin Linux, Unix, BSD, Solaris va macOS shuningdek ostida Windows.

Kutubxonalar:

  • DotNetWikiBot Framework - to'liq xususiyatli mijoz API MediaWiki-da ishlaydigan saytlarda ma'lumotlarni boshqarish uchun dasturlar va veb-robotlarni osongina yaratishga imkon beruvchi .NET-da. Endi bir nechta tillarga tarjima qilingan. To'liq tuzilgan hujjatlar ingliz tilida mavjud.
  • WikiFunctions .NET kutubxonasi - bilan birga AWB, bu ro'yxatlar yaratish, maqolalarni yuklash / tahrirlash, so'nggi o'zgarishlar IRC kanaliga ulanish va boshqalar kabi botlar uchun foydali bo'lgan narsalar kutubxonasi.

Java

Kutubxonalar:

JavaScript

JavaScript a skript tili asosan veb-sahifalarda ishlatiladi. Skriptlarni qo'shish orqali Vikipediyani yaxshilash uchun JavaScript-dan foydalanish mumkin sizning common.js sahifa.

Kutubxonalar:

  • !! Og'ir og'irlik A MediaWiki moduli mavjud Node.js. Shuningdek, modul qo'shilishi mumkin sizning common.js sahifa va wiki-on-JS qo'ng'iroqlari uchun kutubxona sifatida ishlatiladi. Bu a ramka standart so'rovlar (masalan, tizimga kirish, tizimdan chiqish va hk), shuningdek MediaWiki API uchun umumiy o'rash usuli va qisqartirishni o'z ichiga oladi.
  • wikiapi - MediaWiki API-ga JavaScript orqali oddiy vikitekstni tahlil qilish vositasi bilan kirishning oddiy usuli, CeJS MediaWiki moduli yordamida. Qarang Vikipediya bot misollari kuni GitHub.

Yoqut

Kutubxonalar:

Umumiy Lisp

  • CL-MediaWiki MediaWiki API-ni a sifatida amalga oshiradi Umumiy Lisp paket. Foydalanish rejalashtirilgan JSON so'rov ma'lumotlari formati sifatida. Maxlag va tasdiqlash kengaytmalarini qo'llab-quvvatlaydi.

Xaskell

VBScript

VBScript a skript tili asosida Visual Basic dasturlash tili. VBScript uchun nashr etilgan bot ramkalar mavjud emas, ammo ulardan foydalanadigan botlarning ba'zi misollarini quyida ko'rish mumkin:

Lua

  • Lua yillik seminari 2016 davomida, Jim Karter va Dfavro Vikimedia loyihalari uchun Lua-ning bot tizimini yaratishni boshladi. Iltimos, rivojlanish haqida suhbatlashish uchun ularning suhbat sahifasida Jim Karter bilan bog'laning.
  • mwtest tomonidan yaratilgan vikibot yozish uchun Lua-dan foydalanadigan misol Foydalanuvchi: Aleksandr Misel, oddiy API bilan.