Из Википедии, бесплатной энциклопедии
Перейти к навигации Перейти к поиску

Роботы или боты - это автоматические процессы, которые взаимодействуют с Википедией (и другими проектами Викимедиа), как если бы они были редакторами-людьми. На этой странице делается попытка объяснить, как разработать бота для использования в проектах Викимедиа, и многое из этого может быть перенесено на другие вики, основанные на MediaWiki. Объяснение предназначено в основном для тех, кто имеет некоторый опыт программирования, но не знает, как применить эти знания для создания бота из Википедии.

Зачем мне создавать бота? [ редактировать ]

Боты могут автоматизировать задачи и выполнять их намного быстрее, чем люди. Если у вас есть простая задача, которую нужно выполнять много раз (например, добавить шаблон на все страницы в категории с 1000 страниц), то эта задача лучше подходит для бота, чем для человека.

Рекомендации перед созданием бота [ править ]

Часто гораздо проще запросить задание у существующего бота. Если у вас только периодические запросы или вам неудобно программировать, это обычно лучшее решение. Эти запросы можно сделать в Википедии: Запросы ботов . Кроме того, есть ряд инструментов, доступных каждому. Большинство из них представляют собой усовершенствованные веб-браузеры с функциями, специфичными для Mediawiki. Самым популярным из них является AutoWikiBrowser (AWB), браузер, специально разработанный для помощи при редактировании Википедии и других проектов Викимедиа. В основном полный список инструментов можно найти в Википедии: Инструменты / Инструменты редактирования . Инструменты, такие как AWB, часто можно использовать с небольшим пониманием программирования или без него.

Если вы решите, что вам нужен собственный бот из-за частоты или новизны ваших требований, вам не нужно писать его с нуля. В Википедии уже работает ряд ботов, и многие из этих ботов публикуют свой исходный код, который иногда можно повторно использовать с небольшими дополнительными затратами времени на разработку. Также доступен ряд стандартных фреймворков для ботов. Изменение существующего бота или использование фреймворка значительно сокращает время разработки. Кроме того, поскольку эти кодовые базы широко используются и поддерживаются проектами сообщества, гораздо проще получить ботов на основе этих фреймворков, одобренных для использования. Самым популярным и распространенным из этих фреймворков является Pywikibot (PWB), бот-фреймворк, написанный на Python.. Он тщательно задокументирован и протестирован, и многие стандартизированные скрипты Pywikibot (инструкции для ботов) уже доступны. Другие примеры фреймворков для ботов можно найти ниже . Для некоторых из этих фреймворков, таких как PWB, общее знакомство со скриптами - это все, что необходимо для успешного запуска бота (важно регулярно обновлять эти фреймворки).

Написание нового бота требует значительных навыков программирования. Совершенно новый бот должен пройти серьезное тестирование, прежде чем он будет одобрен для нормальной работы. Чтобы написать успешного бота, решающее значение имеет планирование. Важны следующие соображения:

  • Будет ли бот работать вручную или полностью автоматизирован?
  • Вы создадите бота в одиночку или с помощью других программистов?
  • Будут ли регистрироваться запросы, правки или другие действия бота? Если да, будут ли журналы храниться на локальном носителе или на вики-страницах?
  • Будет ли бот работать внутри веб-браузера (например, написанного на Javascript) или это будет отдельная программа?
  • Если бот является отдельной программой, будет ли он работать на вашем локальном компьютере или на удаленном сервере, таком как Toolforge ?
  • Если бот работает на удаленном сервере, смогут ли другие редакторы управлять ботом или запускать его?

Как работает бот из Википедии? [ редактировать ]

Обзор работы [ править ]

Как и человек-редактор, бот Википедии читает страницы Википедии и вносит изменения там, где, по его мнению, необходимо внести изменения. Разница в том, что, хотя боты быстрее и менее склонны к утомлению, чем люди, они далеко не так умны, как мы. Боты хороши в повторяющихся задачах, которые имеют легко определяемые шаблоны, когда нужно принимать мало решений.

В наиболее типичном случае бот входит в свою учетную запись и запрашивает страницы из Википедии почти так же, как и браузер, хотя он не отображает страницу на экране, а работает с ней в памяти, а затем программно проверяет код страницы, чтобы узнать, нужно ли вносить какие-либо изменения. Затем он вносит и отправляет все изменения, для которых он был разработан, опять же во многом так же, как и браузер.

Поскольку боты обращаются к страницам так же, как и люди, боты могут испытывать те же трудности, что и пользователи-люди. Они могут попасть в конфликт редактирования, иметь тайм-аут страницы или столкнуться с другими неожиданными осложнениями при запросе страниц или внесении изменений. Поскольку объем работы, выполняемой ботом, больше, чем объем работы, выполняемой живым человеком, бот с большей вероятностью столкнется с этими проблемами. Таким образом, важно учитывать эти ситуации при написании бота.

API для ботов [ править ]

Чтобы внести изменения в страницы Википедии, бот обязательно должен получить страницы из Википедии и отправить изменения обратно. Для этой цели доступно несколько интерфейсов прикладного программирования (API).

  • MediaWiki API ( api.php). Эта библиотека была специально написана, чтобы позволить автоматическим процессам, таким как боты, делать запросы и публиковать изменения. Данные возвращаются в формате JSON (подробности см. В форматах вывода ).
    Статус: встроенная функция MediaWiki, доступная на всех серверах Викимедиа. Другие вики-сайты, не относящиеся к Викимедиа, могут отключать или ограничивать доступ для записи.
    Существует также песочница API для тех, кто хочет протестировать функции api.php.
  • Специально: Экспорт можно использовать для получения массового экспорта содержимого страницы в форме XML. См. Руководство: Параметры для Специального: Экспорт для аргументов;
    Статус: встроенная функция MediaWiki, доступная на всех серверах Викимедиа.
  • Обработка необработанной (Wikitext) страницы: отправка запроса action=rawили action=raw&templates=expandзапроса GET на index.php предоставит необработанный исходный код wikitext страницы. Запрос API с action=query&prop=revisions&rvprop=contentили action=query&prop=revisions&rvprop=content&rvexpandtemplates=1примерно эквивалентен и позволяет получить дополнительную информацию. Например:https://en.wikipedia.org/w/index.php?title=Help:Creating_a_bot&action=raw
    Статус: встроенная функция MediaWiki, доступная на всех серверах Викимедиа.

Некоторые веб-серверы Википедии настроены для предоставления запросов на сжатое ( gzip ) содержимое. Это можно сделать, включив строку «Accept-Encoding: gzip» в заголовок HTTP-запроса; если заголовок ответа HTTP содержит «Content-Encoding: gzip», документ имеет формат gzip, в противном случае он находится в обычной несжатой форме. Обратите внимание, что это относится к веб-серверу, а не к программному обеспечению MediaWiki. Другие сайты, использующие MediaWiki, могут не иметь этой функции. Если вы используете существующую структуру ботов, она должна обрабатывать такие низкоуровневые операции.

Авторизация [ редактировать ]

Одобренные боты должны войти в систему, чтобы вносить изменения. Хотя бот может делать запросы на чтение без входа в систему, боты, завершившие тестирование, должны входить в систему для всех действий. Боты, вошедшие в систему из учетной записи с флагом бота, могут получать больше результатов по запросу из Mediawiki API (api.php). Большинство фреймворков для ботов должны обрабатывать логин и файлы cookie автоматически, но если вы не используете существующий фреймворк, вам нужно будет выполнить следующие действия.

В целях безопасности данные для входа должны передаваться с использованием метода HTTP POST . Поскольку параметры запросов HTTP GET легко видны в URL, вход через GET отключен.

Чтобы авторизовать бота с помощью MediaWiki API , необходимы два запроса:

Запрос 1 - это запрос GET для получения токена входа
  • URL: https://en.wikipedia.org/w/api.php?action=query&meta=tokens&type=login&format=xml
Запрос 2 - это POST для завершения входа в систему
  • URL: https://en.wikipedia.org/w/api.php?action=login&format=xml
  • Параметры POST:
    • lgname=BOTUSERNAME
    • lgpassword=BOTPASSWORD
    • lgtoken=TOKEN

где TOKEN - токен из предыдущего результата. Файлы cookie HTTP из предыдущего запроса также должны быть переданы со вторым запросом.

Успешная попытка входа в систему приведет к тому, что сервер Викимедиа установит несколько файлов cookie HTTP . Бот должен сохранять эти файлы cookie и отправлять их обратно каждый раз, когда делает запрос (это особенно важно для редактирования). В английской Википедии следует использовать следующие файлы cookie: enwikiUserID , enwikiToken и enwikiUserName . Enwiki_session печенье требуется , чтобы фактически отправить правку или совершить какое - то изменение, в противном случае MediaWiki: Session не в состоянии предварительного просмотра сообщение об ошибке будет возвращено.

Вход в основной аккаунт через "action = login" устарел и может перестать работать без предупреждения. Чтобы продолжить вход с помощью «action = login», см. Special: BotPasswords .

Редактирование; редактировать токены [ править ]

В Википедии используется система токенов редактирования для внесения правок на страницы Википедии, а также для других операций, которые изменяют существующий контент, например отката. Токен выглядит как длинное шестнадцатеричное число, за которым следует '+ \', например:

d41d8cd98f00b204e9800998ecf8427e + \

Роль токенов редактирования состоит в том, чтобы предотвратить «захват редактирования», когда пользователей обманом заставляют внести изменения, щелкнув одну ссылку.

Процесс редактирования включает два HTTP-запроса. Во-первых, необходимо сделать запрос на токен редактирования. Затем должен быть сделан второй HTTP-запрос, который отправляет новое содержимое страницы вместе с только что полученным токеном редактирования. Невозможно внести изменения в один HTTP-запрос. Маркер редактирования остается неизменным в течение всего сеанса входа в систему, поэтому маркер редактирования необходимо получить только один раз, и его можно использовать для всех последующих изменений.

Чтобы получить токен редактирования, выполните следующие действия:

  • MediaWiki API (api.php) . Сделайте запрос со следующими параметрами (см. Mw: API: Edit - Create & Edit pages ).
    • action=query
    • prop=info
    • titles=PAGENAME
    • intoken=edit

    Токен будет возвращен в edittokenатрибуте ответа.

Если токен редактирования, который получает бот, не имеет шестнадцатеричной строки ( т. Е. Токен редактирования имеет значение «+ \»), то бот, скорее всего, не вошел в систему. Это может быть связано с рядом факторов: сбой при аутентификации с помощью сервер, разорванное соединение, какой-то тайм-аут или ошибка при сохранении или возврате правильных файлов cookie. Если это не из-за ошибки программирования, просто войдите в систему еще раз, чтобы обновить файлы cookie входа. Боты должны использовать расширение Assert Edit Extension, чтобы убедиться, что они вошли в систему.

Конфликты редактирования [ править ]

Конфликты при редактировании возникают, когда на одной странице предпринимаются несколько пересекающихся попыток редактирования. Почти каждый бот будет в конечном итоге попасть в конфликте редактирования того или иного рода, и должен включать в себя какой - то механизм , чтобы проверить на и разместить эти вопросы.

Боты, использующие Mediawiki API (api.php), должны получить токен редактирования вместе с starttimestamp«базовой» временной меткой последней ревизии перед загрузкой текста страницы при подготовке к редактированию; prop=info|revisionsможет использоваться для получения как токена, так и содержимого страницы в одном запросе ( пример ). При подаче редактирования, установите starttimestampи basetimestampатрибуты, и проверьте ответы сервера на признаки ошибок. Для получения дополнительной информации см. Mw: API: Edit - Create & Edit pages .

Вообще говоря, если редактирование не удается завершить, бот должен еще раз проверить страницу, прежде чем пытаться внести новое редактирование, чтобы убедиться, что редактирование по-прежнему актуально. Кроме того, если бот перепроверяет страницу, чтобы повторно отправить изменение, он должен быть осторожен, чтобы избежать любого поведения, которое может привести к бесконечному циклу, и любого поведения, которое может даже напоминать конфликт редактирования .

Обзор процесса разработки бота [ править ]

На самом деле кодирование или написание бота - это только одна часть разработки бота. Обычно вы должны следовать приведенному ниже циклу разработки, чтобы убедиться, что ваш бот следует политике ботов Википедии . Несоблюдение политики может привести к тому, что ваш бот не будет одобрен или заблокирован для редактирования Википедии.

Обзор цикла разработки ботов в Википедии

Идея [ править ]

  • Первой задачей при создании бота для Википедии является определение требований или разработка идеи. Если вы не знаете, для чего писать бота, вы можете подобрать идеи по запросу о работе, которую должен выполнить бот .
  • Убедитесь, что существующий бот еще не делает то, что, по вашему мнению, должен делать ваш бот. Чтобы узнать, какие задачи уже выполняет бот, просмотрите список работающих в данный момент ботов .

Спецификация [ править ]

  • Спецификация - это задача точного описания программного обеспечения, которое будет написано, возможно, в строгой форме. Вы должны составить подробное предложение о том, что вы хотите от него делать. Попробуйте обсудить это предложение с некоторыми редакторами и доработать его на основе отзывов. Даже отличную идею можно улучшить, включив в нее идеи других редакторов.
  • В самом простом виде указанный вами бот должен соответствовать следующим критериям:
  • Бот безвреден (он не должен вносить правки, которые могут нарушить нормальную работу энциклопедии).
  • Бот полезен (он предоставляет полезные услуги более эффективно, чем обычный редактор)
  • Бот не тратит зря ресурсы сервера.

Архитектура программного обеспечения [ править ]

  • Подумайте, как вы могли бы его создать и какие языки программирования и инструменты вы бы использовали. Архитектура заботится о том, чтобы система программного обеспечения соответствовала требованиям продукта, а также о том, что будущие требования могут быть удовлетворены. Определенные языки программирования лучше подходят для одних задач, чем другие, для получения более подробной информации см. § Языки программирования и библиотеки .

Реализация [ править ]

Реализация (или кодирование) включает превращение дизайна и планирования в код. Это может быть самая очевидная часть работы по разработке программного обеспечения, но не обязательно самая большая часть. На этапе внедрения необходимо:

  • Создайте учетную запись для своего бота. Щелкните здесь при входе в систему, чтобы создать учетную запись и связать ее со своей. (Если вы не создадите учетную запись бота во время входа в систему, она, вероятно, будет заблокирована как возможная sockpuppet или неавторизованный бот, пока вы не подтвердите право собственности)
  • Создайте страницу пользователя для своего бота. Редактирование вашего бота не должно производиться под вашей учетной записью. Вашему боту потребуется собственная учетная запись с собственным именем пользователя и паролем.
  • Добавьте ту же информацию на пользовательскую страницу бота. Было бы неплохо добавить ссылку на страницу утверждения (одобренную или нет) для каждой функции.

Тестирование [ править ]

Хороший способ тестирования вашего бота в процессе разработки - это показать ему изменения (если таковые имеются), которые он внес бы на страницу, а не редактировать живую вики. В некоторых фреймворках ботов (например, pywikibot ) есть предварительно закодированные методы для отображения различий. Во время процесса утверждения боту, скорее всего, будет предоставлен пробный период (обычно с ограничением количества правок или дней, в течение которых он должен работать), в течение которого он может фактически редактировать, чтобы обеспечить точную настройку и сгладить любые ошибки. По окончании пробного периода, если все прошло по плану, бот должен получить разрешение на полноценную работу.

Документация [ править ]

Важной (и часто упускаемой из виду) задачей является документирование внутреннего дизайна вашего бота с целью дальнейшего обслуживания и улучшения. Это особенно важно, если вы собираетесь разрешить клонирование своего бота. В идеале вы должны опубликовать исходный код вашего бота на его пользовательской странице или в системе контроля версий (см. # Боты с открытым исходным кодом ), если вы хотите, чтобы другие могли запускать его клоны. Этот код должен быть хорошо документирован (обычно с использованием комментариев) для простоты использования.

Запросы / жалобы [ править ]

Вы должны быть готовы ответить на вопросы или возражения в отношении вашего бота на своей странице обсуждения пользователя, особенно если он работает в потенциально конфиденциальной области, такой как очистка изображений добросовестного использования .

Обслуживание [ править ]

Поддержание и улучшение вашего бота, чтобы он справлялся с недавно обнаруженными ошибками или новыми требованиями, может занять гораздо больше времени, чем первоначальная разработка программного обеспечения. Чтобы упростить обслуживание, документируйте свой код с самого начала.

Основные изменения функциональности одобренных ботов должны быть одобрены .

Общие рекомендации по запуску бота [ править ]

В дополнение к официальной политике ботов, которая охватывает основные моменты, которые следует учитывать при разработке вашего бота, существует ряд более общих рекомендаций, которые следует учитывать при разработке вашего бота.

Лучшие методы работы с ботами [ править ]

  • Установите собственный заголовок User-Agent для своего бота в соответствии с политикой User-Agent Викимедиа . Если вы этого не сделаете, ваш бот может столкнуться с ошибками и может быть заблокирован техническим персоналом на уровне сервера.
  • Используйте параметр maxlag с максимальной задержкой 5 секунд. Это позволит боту работать быстро при низкой нагрузке на сервер и задросселировать его при высокой нагрузке на сервер.
    • Если вы пишете бота в среде, которая не поддерживает maxlag, ограничьте общее количество запросов (запросы на чтение и запись вместе) не более 10 в минуту.
  • По возможности используйте API и устанавливайте ограничения запросов на самые большие значения, разрешенные сервером, чтобы минимизировать общее количество запросов, которые необходимо выполнить.
  • Запросы на редактирование (запись) дороже в серверном времени, чем запросы на чтение. Будьте легкими в редактировании и создайте свой код так, чтобы редактирование было минимальным.
    • Попытайтесь объединить правки. Одно большое правление лучше, чем десять меньших.
  • Если возможно, включите постоянные соединения HTTP и сжатие в своей клиентской библиотеке HTTP.
  • Не делайте многопоточные запросы. Дождитесь завершения одного запроса сервера, прежде чем начинать другой.
  • Отключитесь при получении ошибок от сервера. Такие ошибки, как тайм-ауты squid, часто указывают на большую нагрузку на сервер. Используйте последовательность все более длительных задержек между повторными запросами .
  • Используйте утверждение, чтобы убедиться, что ваш бот вошел в систему.
  • Тщательно протестируйте свой код, прежде чем выполнять большие автоматизированные запуски. По отдельности изучите все правки при пробном запуске, чтобы убедиться, что они безупречны.

Общие функции ботов, которые вам следует рассмотреть [ править ]

Ручная помощь [ править ]

Если ваш бот делает что-либо, что требует суждения или оценки контекста (например, исправляет орфографию), вам следует подумать о том, чтобы сделать вашего бота управляемым вручную, что означает, что человек проверяет все изменения перед их сохранением. Это значительно снижает скорость работы бота, но также значительно снижает количество ошибок.

Отключение бота [ править ]

Быстро отключить вашего бота должно быть легко. Если ваш бот выйдет из строя, вы несете ответственность за его устранение! Вы можете заставить бота отказаться от запуска, если сообщение было оставлено на его странице обсуждения, исходя из предположения, что сообщение может быть жалобой на его действия; это можно проверить с помощью meta=userinfoзапроса API ( пример ). Или у вас может быть страница, которая отключит бота при изменении; это можно проверить, загружая содержимое страницы перед каждым редактированием.

Подпись [ править ]

Как и человек, если ваш бот вносит правки на страницу обсуждения в Википедии, он должен подписать свое сообщение четырьмя тильдами (~~~~). Подписи принадлежат только пространствам имен обсуждения, за исключением страниц проекта, используемых для обсуждения (например, статьи для удаления ).

Флаг бота [ править ]

Изменения бота будут видны в Special: RecentChanges , если только в них не указан бот. После того, как бот был одобрен и получил разрешение флага бота, можно добавить «bot-True» к вызову API - см. Mw: API: Edit # Parameters , чтобы скрыть изменения бота в Special: RecentChanges . В Python, используя либо mwclient, либо wikitools, добавление Bot = True к команде редактирования / сохранения установит редактирование как редактирование бота - например PageObject.edit(text=pagetext, bot=True, summary=pagesummary).

Боты с открытым исходным кодом [ править ]

Многие операторы ботов предпочитают сделать свой код открытым, и иногда это может потребоваться до утверждения для особо сложных ботов. Открытие исходного кода кода дает несколько преимуществ:

  • Это позволяет другим проверять ваш код на предмет потенциальных ошибок. Как и в случае с прозой, автору кода часто бывает трудно его адекватно просмотреть.
  • Другие могут использовать ваш код для создания собственных ботов. Пользователь, не знакомый с написанием ботов, может использовать ваш код в качестве примера или шаблона для своих собственных ботов.
  • Он поощряет хорошие методы обеспечения безопасности , а не безопасность через неизвестность .
  • Если вы откажетесь от проекта, он позволит другим пользователям запускать задачи вашего бота без необходимости писать новый код.

Открытый исходный код, хотя и редко требуется, обычно поощряется в соответствии с открытым и прозрачным характером Википедии.

Перед публикацией кода убедитесь, что конфиденциальная информация, такая как пароли, выделена в файл, который не является общедоступным.

Для пользователей, желающих сделать свой код открытым, доступно множество вариантов. Размещение кода на подстранице пользовательского пространства бота может быть затруднительным в обслуживании, если оно не автоматизировано, и приводит к тому, что код становится многократно лицензированным в соответствии с условиями лицензирования Википедии в дополнение к любым другим условиям, которые вы можете указать. Лучшее решение - использовать систему контроля версий, такую ​​как SVN , Git или Mercurial . В Википедии есть статьи, сравнивающие различные варианты программного обеспечения и веб-сайты для хостинга кода , многие из которых бесплатны.

Языки программирования и библиотеки [ править ]

Ботов можно писать практически на любом языке программирования. Выбор языка зависит от опыта и предпочтений автора ботов, а также от наличия библиотек, необходимых для разработки ботов. Следующий список включает некоторые языки, обычно используемые для ботов:

Awk [ править ]

GNU Awk - это простой язык для малых и больших ботов, включая OAuth.

  • Фреймворк и библиотеки: BotWikiAwk
  • Примеры ботов в учетной записи GitHub пользователя: GreenC на GitHub

Perl [ править ]

Если вы размещены на веб-сервере, вы можете запустить свою программу и взаимодействовать с ней, пока она выполняется, через общий интерфейс шлюза из вашего браузера. Если ваш интернет-провайдер предоставляет вам веб-пространство, велики шансы, что у вас есть доступ к сборке Perl на веб-сервере, с которой вы можете запускать свои программы Perl.

Библиотеки:

  • MediaWiki :: API  - базовый интерфейс к API, позволяющий сценариям автоматизировать редактирование и извлечение данных с сайтов, управляемых MediaWiki.
  • MediaWiki :: Bot  - довольно полный фреймворк для ботов MediaWiki, написанный на Perl. Предоставляет более высокий уровень абстракции, чем MediaWiki :: API. Плагины предоставляют функции администратора и управляющего. В настоящее время не поддерживается.

PHP [ править ]

PHP также можно использовать для программирования ботов. Разработчики MediaWiki уже знакомы с PHP, поскольку это язык, на котором написаны MediaWiki и его расширения. PHP - особенно хороший выбор, если вы хотите предоставить своему боту интерфейс на основе веб-форм. Например, предположим, что вы хотите создать бота для переименования категорий. Вы можете создать HTML-форму, в которой вы будете вводить текущее и желаемое названия категории. Когда форма будет отправлена, ваш бот сможет прочитать эти данные, затем отредактировать все статьи в текущей категории и переместить их в нужную категорию. (Очевидно, что любой бот с интерфейсом формы должен быть каким-то образом защищен от случайных пользователей Интернета.)

Таблица функций ботов PHP может дать некоторое представление о возможностях основных фреймворков ботов.

  1. ^ Не включает тех, кто работал над фреймворками, разветвленными для создания перечисленных фреймворков.
  2. ^ Где возможно. Исключает загрузку изображений и другие подобные задачи, которые в настоящее время не поддерживаются API.

Python [ править ]

Библиотеки:

  • Pywikibot - вероятно, наиболее часто используемый фреймворк для ботов.
  • ceterach - Интерфейс для взаимодействия с MediaWiki
  • wikitools - облегченный фреймворк для ботов только на Python-2, который использует API MediaWiki исключительно для получения данных и редактирования, используется и поддерживается г- ном Z-man ( загрузки )
  • mwclient - фреймворк на основе API, поддерживаемый Брайаном.
  • mwparserfromhell - Парсер вики-текста, поддерживаемый The Earwig
  • pymediawiki - Оболочка API MediaWiki, доступная только для чтения, на Python, простая в использовании.

MATLAB [ править ]

  • MatWiki - предварительный (по состоянию на февраль 2019 г.) клиент MATLAB R2016b (9.1.x), поддерживающий только логины ботов и семантические запросы #ask.

Microsoft .NET [ править ]

Microsoft .NET - это набор языков, включая C # , C ++ / CLI , Visual Basic .NET , J # , JScript .NET , IronPython и Windows PowerShell . Используя Mono Project , программы .NET могут также работать в Linux , Unix , BSD , Solaris и macOS, а также под Windows .

Библиотеки:

  • DotNetWikiBot Framework  - полнофункциональный клиентский API на платформе .NET, который позволяет легко создавать программы и веб-роботов для управления информацией на сайтах на базе MediaWiki. Сейчас переведено на несколько языков. Подробная составленная документация доступна на английском языке.
  • Библиотека WikiFunctions .NET  - вместе с AWB представляет собой библиотеку, которая полезна для ботов, например, создание списков, загрузка / редактирование статей, подключение к каналу IRC последних изменений и многое другое.

Java [ править ]

Библиотеки:

  • Java Wiki Bot Framework - фреймворк для Java-вики-ботов
  • wiki-java - фреймворк для Java-вики-ботов, состоящий только из одного файла
  • WPCleaner - Библиотека, используемая инструментом WPCleaner.
  • jwiki - простой и легкий в использовании фреймворк для Java-вики-ботов.

Node.js [ править ]

Библиотеки:

  • Библиотека mwn активно поддерживается и написана на современном ES6 с использованием обещаний (с поддержкой async – await). Это большая библиотека, в которой есть классы для удобной работы с заголовками страниц и викитекстом (включая ограниченные возможности синтаксического анализа викитекста). Также поддерживает TypeScript .
  • !! СИЛЬНО РЕКОМЕНДУЕТСЯ MediaWiki модуль существует для Node.js . Модуль также можно добавить на страницу common.js и использовать в качестве библиотеки для вызовов JS в вики. Он предоставляет структуру стандартных запросов (например, вход в систему, выход из системы и т. Д.), А также общий метод оболочки для MediaWiki API и включает регулирование.
  • wikiapi - простой способ доступа к MediaWiki API через JavaScript с помощью простого парсера викитекста с использованием модуля CeJS MediaWiki. См. Примеры ботов из Википедии на GitHub .

Руби [ править ]

Библиотеки:

  • MediaWiki :: Butt  - API-клиент. Активно поддерживается. Посмотреть оценку
  • mediawiki / ruby ​​/ api , клиент API от команды разработчиков релизов Викимедиа . Последнее обновление: декабрь 2017 г., больше не поддерживается, но все еще работает.
  • wikipedia-client - API-клиент. Последнее обновление - март 2018 г. Неизвестно, работает ли по-прежнему.
  • MediaWiki :: Gateway  - API-клиент. Последнее обновление: январь 2016 г. Протестировано до MediaWiki 1.22, затем было совместимо с вики-сайтами Викимедиа. Неизвестно, работает ли еще.

Common Lisp [ править ]

  • CL-MediaWiki реализует MediaWiki API как пакет Common Lisp . Планируется использовать JSON в качестве формата данных запроса. Поддерживает расширения maxlag и assert edit.

Haskell [ править ]

  • http://hackage.haskell.org/package/mediawiki

VBScript [ править ]

VBScript - это язык сценариев, основанный на языке программирования Visual Basic . Для VBScript нет опубликованных фреймворков для ботов, но некоторые примеры ботов, которые его используют, можно увидеть ниже:

  • Пользователь: Smallman12q / Scripts / cleanuplistingtowiki - Авторизация и предварительный просмотр редактирования
  • Пользователь: Smallman12q / VBS / Savewatchlist - Войти, получить необработанный список наблюдения, сохранить в файл, выйти из системы, закрыть IE
  • Commons: Пользователь: Smallbot # Sources - Несколько скриптов, показывающих использование VBScript (Javascript, XMLHTTP, MSHTML, XMLDOM, COM) для пакетной загрузки.

Lua [ править ]

  • Во время Ежегодного семинара Lua 2016 Джим Картер и Дфавро начали разработку бот-фреймворка Lua для проектов Викимедиа. Пожалуйста, свяжитесь с Джимом Картером на их странице обсуждения, чтобы обсудить разработку.
  • mwtest - это пример использования Lua для написания викибота, созданного пользователем: Alexander Misel , с простым API.