Цей бот створений для визначення результатів щорічного конкурсу статей «Європейська весна» (https://uk.wikipedia.org/wiki/Вікіпедія:Європейська_весна), який проходить в Українській Вікіпедії. Він аналізує статті подані на конкурс і визначає всі дані необхідні для підрахунку балів за ці статті (окрім оцінок журі), генеруючи результат у вигляді вікітаблиці.
== Як він працює ==
Бот проходить по категорії, в яку додаються сторінки обговорення статей, поданих на конкурс, і аналізує кожну з них. На сторінці обговорення статті бот шукає конкурсний шаблон (наприклад, {{Європейська весна 2024}}) і аналізує його вміст, шукаючи інформацію про автора/дописувача статті, те чи є це новою статтею чи доповненою, а також яких європейських країн чи спільнот ця стаття стосується. У самій статті рахується скільки байт додав користувач до статті протягом періоду конкурсу, і чи дійсно він створив цю статтю і створив її в період конкурсу, якщо це стверджується у конкурсному шаблоні на сторінці обговорення.
Результатом роботи є згенерована вікісторінка результатів конкурсу (наприклад https://uk.wikipedia.org/w/index.php?title=Вікіпедія:Європейська_весна_2023/Результат&oldid=39496672). Однак, ця сторінка зберігається у текстому файлі 'result.txt' в тій ще папці, де знаходиться виконуваний файл бота, замість збереження сторінки одразу у Вікіпедії (тому результат публікується вручну після перевірки). Ця сторінка складається із трьох таблиць-списків: список учасників із кількістю створених чи покращених ними статей (від найбільшого до найменшого); список конкурсних статей із всією інформацією, необхідною для підрахунку балів за цю статтю; список дискваліфікованих статей, із вказанням причини дискваліфікації.
== Технічна реалізація ==
Бот написаний мовою програмування C# з використанням бібліотеки 'DotNetWikiBot' (http://dotnetwikibot.sourceforge.net/). Рекомендується запускати на Windows 10 або новішій версії цієї ОС. Робота на старіших версіях Windows або на інших операційних системах не гарантується.
Код бота написано з використанням принципів об'єктно-орієнтованого програмування. В ньому задані класи для статей, списків статей, версій (редагувань) та списків версій, зі своїми атрибутами, методами і конструкторами, а також окремий клас із функцією 'Main'. У функції 'Main' починається обробка списку статей (об'єкт класу 'ArticleCollection'), який складається з об'єктів класу 'Article', кожен з яких має серед своїх атрибутів об'єкт класу 'VersionCollection' (тобто, набір редагувань зроблених у цій статті), який є списком об'єктів класу 'Version'.
Код цього бота (файл '.cs') вже скомпільований у виконуваний файл '.exe', який має запускатися через файл консольних команд '.bat'. Однак, якщо треба поміняти те як бот працює, то треба внести зміни до коду бота у файлі 'cee_bot.cs', а потім перекомпілювати його (оновити файл 'cee_bot.exe') запустивши 'compile.bat', щоб застосувати ці зміни. Для цього треба щоб на комп'ютері був встановлений 'Microsoft .NET Framework' (у Windows 10 та 11 він вже є за замовчуванням). Після запуску 'compile.bat' він покаже всі знайдені в коді синтаксичні помилки, якщо вони там є. Якщо помилки є, їх треба виправити і запустити 'compile.bat' знову. Коли він виконається без повідомлень про помилки, значить бот перекомпілювався.
== Налаштування ==
Перед початком роботи необхідно оновити список країн та їх коефіцієнти у файлі 'countries.txt', оновити список статей рекомендованих до створення у файлі 'recommended_wd_ids.txt' (їх ідентифікатори у Вікіданих, без префіксу 'Q'), а також оновити налаштування у файлі 'params.txt'. У цьому файлі є такі налаштування:
- "username" - ім'я користувача, під яким залогіниться і працюватиме бот; редагування не здійснюватимуться, лише читання; важливо щоб в цьому обліковому записі мовою інтерфейсу була встановлена українська.
- "password" - пароль для входу до облікового запису.
- "start_time" - дата початку конкурсного періоду (конкурс починається опівночі цього дня)
- "finish_time" - дата дня, наступного після останнього дня конкурсного періоду (конкурс закінчується о 23:59:59 попереднього дня)
- "minimum_article_size_int" - мінімальний дозволений розмір в байтах для новоствореної статті (менші статті дискваліфікуються)
- "minimum_article_improv_int" - мінімальний дозволений розмір доповнення існуючої статті в байтах (менше доповнення дискваліфікується)
- "small_article_size_int" - розмір статті в байтах, до якого ця стаття вважається малою
- "allow_recommended_only" - якщо "true", то учасникам дозволено створювати лише статті зі списку складеного організаторами (інакше стаття дискваліфіковується); якщо будь-яке інше значення, учасники можеть створювати будь-які статті.
- "articles_category_name" - назва категорії, в якій збиратимуться сторінки обговорення статей, номінованих на конкурс.
- "nomination_template_name" - назва шаблону, який поміщається учасниками на сторінці обговорення статті, щоб номінувати її на конкурс.
== Запуск і опрацювання ==
Для запуску бота треба запустити файл 'cee_bot.bat'. З'явиться чорне віконце консолі Windows, в якому показуватиметься процес роботи бота. Спочатку він увійде в обліковий запис, логін і пароль якого вказані у файлі 'params.txt'. Для цього він попросить ввести ключ двофакторної ідентифікації. Якщо для вказаного облікового запису двофакторна ідентифікація не встановлена, просто натисніть "Enter" (введіть порожній ключ), інакше введіть цей ключ. Далі він завантажить список сторінок, які треба обробити. Після цього сторінки будуть оброблюватись одна за одною. Після того як всі сторінки будуть оброблені, в консолі з'явиться слово "DONE".
В процесі обробки сторінок (статей, поданих на конкурс), можуть показуватись такі попередження:
- "More than one template found" - на сторінці обговорення статті знайдено більше одного конкурсного шаблону; треба залишити лише один із них і продовжити.
- "The country XXX was not found" - в конкурсному шаблоні задана країна, відсутня у списку країн які беруть участь в конкурсі (відсутня у файлі 'countries.txt'); треба виправити або прибрати назву країни і продовжити.
- "Username not given" - в конкурсному шаблоні не знайдено ім'я користувача, який його додав; треба додати ім'я користувача і продовжити.
- "This user XXX did not create this article, YYY did" - справжній автор статті відрізняється від вказаного в конкурсному шаблоні на сторінці обговорення (може виникати також і у випадку, коли один із учасників конкурсу нещодавно переіменувався).
- "This article was created before contest started" - стаття була створена до початку конкурсного періоду; треба прибрати конкурсний шаблон або вказати, що стаття була доповнена.
- "This article was created after contest finished" - стаття була створена після закінчення конкурсного періоду; треба прибрати конкурсний шаблон (переконавшись що стаття не була перейменована так, що історія редагувань залишилась в іншій статті, або що стаття не була видалена, а потім відновлена). (всі попередження показуються англійською, оскільки консоль Windows має проблеми з відображенням кирилиці)
При виникненні попередження необхідно відредагувати сторінку обговорення, на якій воно виникло, щоб усунути проблему вказану у попередженні. Після цього повернутися до вікна виконання програми і натиснути "Enter" для продовження роботи. Бот заново завантажить тільки що відредаговану вами сторінку обговорення і спробує обробити її. У випадку, якщо конкурсний шаблон був взагалі прибраний зі сторінки (стаття взагалі не мала би номіновуватись на конкурс), бота треба перезапустити (закрити вікно виконання і заново запустити 'cee_bot.bat'), інакше виникатиме попередження що конкурсний шаблон не знайдено.
Для повної впевненості в правильності результату, треба запускати бота декілька раз, аж поки він не обробить всі статті із початку до кінця без жодного попередження.
== Контактна інформація ==
Цього бота розробив і підтримує Користувач:Tohaomg (Антон Обожин). Якщо маєте якісь зауваження, пропозиції, питання чи повідомлення про баги, будь ласка, напишіть розробнику на його сторінку обговорення (https://uk.wikipedia.org/wiki/Обговорення_користувача:Tohaomg).