Permanently protected template
Из Википедии, бесплатной энциклопедии
Перейти к навигации Перейти к поиску
Документация по шаблону [ просмотреть ] [ изменить ] [ история ] [ очистить ]

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

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

В частности, в пространствах энциклопедии:

  • Избегайте использования шаблона как тупого инструмента.
  • Решите основную проблему с владельцем бота или сообществом ботов.
  • Удалите тег шаблона, как только основная проблема будет решена.

Важные заметки

Большинство ботов НЕ поймут эти шаблоны, если они косвенно включены.

Большинство ботов не проигнорируют шаблон, если он находится внутри тегов <nowiki> ... </nowiki> . Например, если вы обсуждаете шаблоны с другим редактором, используйте шаблон {{ tl }}, например {{tl|nobots}}, который покажет {{ nobots }}, а не <nowiki>{{nobots}}</nowiki>, который, возможно, будет проанализирован как намеренный запретить доступ ботам на страницу. .

Список включений находится на User: AnomieBOT / Nobots Hall of Shame.

Синтаксис

{{nobots}} Запретить всех совместимых ботов (ярлык без параметров) {{bots}} Разрешить всех ботов (ярлык, не имеющий параметров)
{{bots | allow = <botlist>}} Заблокировать всех совместимых ботов, которых нет в списке {{bots | deny = <botlist>}} Заблокировать всех совместимых ботов в списке
Где <botlist> - это разделенная запятыми строка имен пользователей ботов (AWB может использоваться для всех ботов на основе AWB ):  {{bots | allow = SineBot, Legobot}}  {{bots | deny = AWB}}
<botlist> также может иметь значение «none» или «all», как в следующих примерах:  {{bots | allow = all}} Разрешить всех ботов {{bots | allow = none}} Запретить всех совместимых ботов
 {{bots | deny = all}} Запретить всех совместимых ботов {{bots | deny = none}} Разрешить всех ботов

Боты не обязаны соблюдать шаблон nobots; это будет зависеть от их функциональности, их владельцев и условий их утверждения. Боты , которые в настоящее время поддерживают исключения, перечислены исключения совместимых ботов .

Неправильный синтаксис

Этот синтаксис выглядит правильным, но в зависимости от конкретного бота может не иметь желаемого эффекта. Это заявление не может отрицать ни Bot1, ни Bot2, только одного из двух ботов или обоих ботов, как предполагалось.

{{bots | deny = Bot1 | deny = Bot2}} НЕПРАВИЛЬНО

Вместо этого напишите:

{{bots | deny = Bot1, Bot2}} ПРАВИЛЬНО

Уведомление о сообщении отказаться

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

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

{{bots | optout = all}} Отказаться от всех сообщений (см. ограничения ниже).
{{bots | optout = nosource}} Отказаться от сообщений об источниках . {{bots | optout = nolicense}} Отказаться от сообщений об отсутствии лицензии . {{bots | optout = orfud}} Отказаться от рассылки сообщений о добросовестном использовании . {{bots | optout = npd}} Отказаться от сообщений о разрешении . {{bots | optout = norationale}} Отказаться от сообщений без объяснения причин . {{bots | optout = replaceable}} Отказаться от заменяемых сообщений о добросовестном использовании . {{bots | optout = bettersource}} Отказаться от сообщений с запросом лучшего источника .{{bots | optout = afd}} Отказаться от статей для сообщений об удалении или вариантов  форм .{{bots | optout = ifd}} Отказаться от изображений для сообщений об удалении или варианта .{{bots | optout = prod}} Отключить предупреждение о продукте .{{bots | optout = MassMessage}} Отказаться от массовых сообщений .

Элементы можно объединить, поставив запятую между параметрами.

{{bots | optout = nosource, nolicense}} Отказаться от отсутствия источника и сообщений о лицензии.{{bots | optout = orfud, norationale, replaceable}} Отказаться от сообщений о добросовестном использовании.

Ограничения сообщений, от которых можно отказаться

От некоторых уведомлений о сообщениях нельзя отказаться. Это включает:

  1. Уведомления о нарушении авторских прав
  2. Предупреждения о вандализме (и др.).
  3. Пользователь: уведомления SineBot о том, что они не подписывают сообщения
  4. Любой тег сообщения, который не включен в качестве способа отказа выше. (Есть ли один, который следует включить? Оставьте сообщение на странице обсуждения.)
  5. От массовых сообщений нельзя отказаться с помощью {{bots | optout = all}}; пользователи должны явно отказаться с помощью {{bots | optout = MassMessage}}

Выполнение

  • Pywikibot поддерживает ботов и ноботов с r4096 . Шаблоны можно игнорировать с помощью параметра.
  • Начиная с версии 3.2.0.0 AutoWikiBrowser полностью поддерживает {{ботов}} и {{ноботов}}. Кроме того, можно указать псевдо-имя пользователя AWB , чтобы запретить доступ на страницу всем ботам, основанным на AWB. Однако AWB может игнорировать эти шаблоны.
  • Уведомление об отказе от рассылки было введено здесь 3 апреля 2008 г. Реализация отдельного бота / сценария будет отличаться, и указанное выше уведомление о реализации может не включать эту функцию.

Примеры реализации

PHP

function  allowBots (  $ text ,  $ user  )  {  if  ( preg_match ( '/ \ {\ {(nobots | bots \ | allow = none | bots \ | deny = all | bots \ | optout = all | bots \ | deny =. *? ' . preg_quote ( $ user , ' / ' ) . '. *?)}} / iS ' , $ text ))  return  false ;  if  ( preg_match ( '/\{\{(bots\|allow=all|bots\|allow=.*?' . preg_quote ( $ user , '/' ) . '. *?)}} / iS' ,  $ текст )) вернуть  истину ;  if  ( preg_match ( '/\{\{(bots\|allow=.*?)}}/iS' ,  $ text ))  return  false ;  вернуть  истину ; }

Perl

sub  allow_bots  {  my ( $ text ,  $ user ,  $ opt )  =  @_ ;  вернуть  0,  если  $ text  = ~ / {{[nN] obots}} / ;  вернуть  1,  если  $ text  = ~ / {{[bB] ots}} / ;  if ( $ text  = ~ /\{\{[bBestiveots\s*\|\s*allow\s*=\s*(.*?)\s*}}/s ) {  возвращает  1,  если  $ 1  экв.  'все' ;  вернуть  0,  если  $ 1  экв.  'none' ;  мои  @ боты =  разделить ( / \ s *, \ s * / ,  $ 1 );  return  ( grep  $ _  eq  $ user ,  @bots )  ?  1  :  0 ;  }  if ( $ text  = ~ /\{\{[bhibitedots\s*\|\s*deny\s*=\s*(.*?)\s*}}/s ) {  возвращает  0,  если  $ 1  eq  'все' ;  вернуть  1,  если  $ 1  экв.  'none' ;  мои  @bots  =  split ( / \ s *, \ s * / ,  $ 1 );  возвращаться ( grep  $ _  eq  $ user ,  @bots )  ?  0  :  1 ;  }  if ( определено ( $ opt )  &&  $ text  = ~ / \ { \ {[ bB providedots\s*\|\s*optout\s* =\ s*(.*?)\s* }} / s ) {  вернуть  0,  если  $ 1  eq  'all' ;  мой  @opt  =  split ( / \ s *, \ s * / ,  $ 1 );  return  ( grep  $ _  eq  $ opt ,  @opt )  ?  0 :  1 ;  }  return  1 ; }

VB.NET

Public  Shared  Function  AllowBots ( ByVal  текст  Как  строки ,  ByVal  пользователя  Как  строки )  Как  Boolean  Возврат  не  Regex . IsMatch ( текст ,  "\ {\ {(nobots | bots \ | (allow = none | deny = (?! none). * ("  &  User . Normalize ()  &  "| all) | optout = all)) \} \} " ,  RegexOptions . IgnoreCase ) Конечная  функция

C #

общественная  статическая  BOOL  AllowBots ( строка  текст ,  строка  пользователь ) {  возвращение  ! Regex . IsMatch ( text ,  @ "\ {\ {(nobots | bots \ | (allow = none | deny = (?! none). * ("  +  User . Normalize ()  +  @ ". * | All) | optout = all) )) \} \} " ,  RegexOptions . IgnoreCase ); }

Ява

public  static  boolean  allowBots ( String  text ,  String  user ) {  return  ! текст . соответствует ( "(? si). * \\ {\\ {(nobots | bots \\ | (allow = none | deny = ([^ \\}] *?"  +  user  +  "[^ \\}] * ? | all) | optout = all)) \\} \\}. * " ); }

JavaScript

function  allowBots ( text ,  user ) {  if  ( ! new  RegExp ( "\\ {\\ {\\ s * (nobots | bots [^}] *) \\ s * \\} \\}" ,  "i" ). test ( текст ))  return  true ;  return  ( new  RegExp ( "\\ {\\ {\\ s * боты \\ s * \\ | \\ s * deny \\ s * = \\ s * ([^}] *, \\ s *) * "  +  user . replace ( /([\(\)\*\+\?\.\-\:\!\=\/\^\$ ])/g ,  " \\ $ 1 " )  +  " \ \ s * (? = [, \\}]) [^}] * \\ s * \\} \\} " ,  " i " ).тест ( текст ))  ?  false  :  new  RegExp ( "\\ {\\ {\\ s * ((?! nobots) | bots (\\ s * \\ | \\ s * allow \\ s * = \\ s * ((?! нет) | ([^}] *, \\ s *) * "  +  пользователь . replace ( / ([\ (\) \ * \ + \? \. \ - \: \! \ = \ / \ ^ \ $]) / g ,  "\\ $ 1" )  +  "\\ s * (? = [, \\}]) [^}] * | все))? | боты \\ s * \\ | \\ s * deny \\ s * = \\ s * (?! all) [^}] * | боты \\ s * \\ | \\ s * optout = (?! all) [^}] *) \\ s * \\} \\} " ,  " i " ). тест ( текст ); }

Python

Этот код предполагает, что библиотека mwparserfromhell была установлена ​​и импортирована в текущий сценарий.

def  allow_bots ( текст ,  пользователь ): user  =  user . нижний () . strip () текст  =  mwparserfromhell . parse ( текст ) для  tl  в  тексте . filter_templates (): если  tl . имя . спички ([ «боты» ,  «nobots» ]): перерыв еще : возвращение  Правды для  паров  в  ТЛ .params : bots  =  [ x . нижний () . strip ()  для  x  в  параметре . значение . split ( "," )] если  параметр . name  ==  'разрешить' : если  '' . join ( bots )  ==  'none' :  вернуть  False для  бота  в  ботах : если  бот  в  ( пользователь ,  'все'): вернуть  True elif  param . name  ==  'запретить' : если  '' . join ( bots )  ==  'none' :  вернуть  True для  бота  в  ботах : if  bot  in  ( user ,  'all' ): вернуть  False if  ( tl . name . соответствует ( 'nobots' )  и  len ( tl . params ) ==  0 ): вернуть  False return  True

Смотрите также

  • Шаблон: Боты в Meta-Wiki