Modelo: Bots/doc

Os modelos Bots e Nobots informam aos bots e outras ferramentas e scripts de edição automatizada que eles devem ou não editar uma página que contém o modelo. Os modelos podem ser usados ​​para bloquear a maioria dos bots (todos os bots que implementaram esta funcionalidade) ou bots específicos por nome ou função. Por exemplo, isso pode ser usado para aceitar ou cancelar mensagens do talk bot do usuário ou para fazer com que os bots de manutenção evitem determinadas páginas. Esses modelos devem ser usados ​​com cuidado fora do espaço do usuário para evitar o bloqueio de edições úteis de bot.

A aceitação explícita tem a vantagem de receber alterações úteis ou postagens direcionadas que um bot poderia ignorar seguindo o comportamento de "exclusão" por padrão. Os usuários devem estar cientes de que, ao optar por não receber postagens de bots, eles não serão notificados sobre assuntos relacionados ao material que editaram ou carregaram, que são marcados ou verificados por bots de acordo com a política.

Em particular, nos espaços da enciclopédia:

  • Evite usar o modelo como um instrumento contundente
  • Resolva a raiz do problema com o proprietário do bot ou com a comunidade de bots
  • Remova a tag do modelo assim que o problema subjacente for resolvido.

Anotações importantes

A maioria dos bots NÃO entenderá esses modelos quando eles forem transcluídos indiretamente.

A maioria dos bots não desconsiderará o modelo se ele estiver dentro das tags <nowiki> ... </nowiki> . Por exemplo, se você estiver discutindo os modelos com outro editor, use o modelo {{ tl{{tl|nobots}} }}, por exemplo , que mostrará {{ nobots }}, em vez de <nowiki>{{nobots}}</nowiki>, que possivelmente será analisado como uma intenção de banir bots da página .

Uma lista de transclusões está em User:AnomiaBOT/Nobots Hall of Shame

Sintaxe

{{nobots}}                 Banir todos os bots compatíveis (atalho que não usa parâmetros)
 {{bots}}                   Permitir todos os bots (atalho que não usa parâmetros)
{{bots|allow=<botlist>}}   Banir todos os bots compatíveis que não estejam na lista
 {{bots|deny=<botlist>}}    Banir todos os bots compatíveis na lista
Onde <botlist> é uma string delimitada por vírgulas de nomes de usuários de bot (AWB pode ser usado para todos os bots baseados em AWB ): 
  {{bots|allow=SineBot,Legobot}} 
  {{bots|deny=AWB}}
<botlist> também pode ser "none" ou "all", como nos exemplos a seguir: 
  {{bots|allow=all}}       Permitir todos os bots
   {{bots|allow=none}}      Banir todos os bots compatíveis
  {{bots|deny=all}}        Banir todos os bots compatíveis
   {{bots|deny=none}}       Permitir todos os bots

Os bots não são obrigados a seguir o modelo nobots; dependerá da sua funcionalidade, dos seus proprietários e dos seus termos de aprovação. Os bots que atualmente suportam exclusão estão listados em bots compatíveis com exclusão .

Desativação de notificação de mensagem

Outra opção é cancelar o recebimento de tipos específicos de mensagens para usuários que desejam ser notificados sobre determinados problemas, mas não sobre outros. Os usuários devem estar cientes de que, ao optar por não receber notificações específicas, eles não serão notificados sobre assuntos relacionados ao material que editaram ou carregaram, que são marcados de acordo com a política. Ações (como exclusão) podem ser executadas sem que você seja notificado. Ao aplicar isso à sua própria página de discussão do usuário, você concorda com esta consequência. Aplicar isso a uma página de discussão de um usuário que não seja a sua será considerado vandalismo. Todos os bots e scripts que deixam mensagens na página de discussão de um usuário são incentivados a adicionar esse recurso.

Ao adicionar isso à página de discussão de um usuário, o usuário ainda pode receber essas mensagens por bots ou scripts não compatíveis, ou por humanos que adicionam a tag manualmente.

{{bots|optout=all}}             Desative todas as mensagens (veja as limitações abaixo).
{{bots|optout=nosource}}        Desativar mensagens sem origem .
 {{bots|optout=nolicense}}       Desative mensagens
 sem licença . {{bots|optout=orfud}}           Desativar mensagens órfãs de uso justo .
 {{bots|optout=npd}}             Desative mensagens sem permissão .
 {{bots|optout=norationale}}     Desative mensagens sem justificativa .
 {{bots|optout=replaceable}}     Desative mensagens de uso justo substituíveis .
 {{bots|optout=bettersource}}    Desative mensagens de solicitação de origem melhor .
 {{bots|optout=afd}}             Desativar artigos para mensagens de exclusão ou formulários variantes  .
 {{bots|optout=ifd}}             Desativar imagens para mensagens de exclusão ou variantes .
 {{bots|optout=prod}} Aviso            de desativação do produto .
 {{bots|optout=MassMessage}}     Desativar mensagens em massa .

Os itens podem ser combinados colocando uma vírgula entre as opções

{{bots|optout=nosource,nolicense}}                  Desativar mensagens sem fonte e sem licença.
 {{bots|optout=orfud,norationale,replaceable}}       Desative mensagens de uso justo.

Restrições de mensagens que podem ser canceladas

Algumas notificações de mensagens não podem ser desativadas. Esses incluem:

  1. Notificações de violação de direitos autorais
  2. Avisos de vandalismo (e outros).
  3. Usuário: Avisos do SineBot por não assinar postagens
  4. Qualquer tag de mensagem que não esteja incluída como forma de cancelamento acima. (Há algum que deveria ser incluído? Deixe uma mensagem na página de discussão.)
  5. Mensagens em massa não podem ser canceladas usando {{bots|optout=all}}; os usuários devem cancelar explicitamente com {{bots|optout=MassMessage}}

Sintaxe incorreta

Essas sintaxes parecem corretas, mas dependendo do bot individual, podem não ter o efeito pretendido.

INCORRETA CORRETO Notas
{{bots|deny=Bot1|deny=Bot2}} {{bots|negar=Bot1,Bot2}} Esta declaração não pode negar nem Bot1 nem Bot2, apenas um dos dois bots, ou ambos os bots conforme pretendido. Sob uma interpretação estrita, negaria um bot chamado "Bot1|deny=Bot2".
{{bots|allow=Bot1}}{{bots|allow=Bot2}} {{bots|allow=Bot1,Bot2}} Esta declaração não pode permitir nem Bot1 nem Bot2, apenas um dos dois bots ou ambos os bots conforme pretendido. Sob uma interpretação estrita, cada bot deve ser negado pelo modelo sem mencioná-lo.
{{bots|deny=Bot1}}{{bots|deny=Bot2}} {{bots|negar=Bot1,Bot2}} Embora isso deva funcionar, alguns bots podem processar apenas a primeira ou a última instância de {{bots|deny=...}} em uma página.
{{bots|permitir=Bot1|deny=Bot2}} {{bots|permitir=Bot1}} Esta declaração não pode negar o Bot2 e pode não permitir o Bot1. Sob uma interpretação estrita, permitiria apenas um bot chamado "Bot1|deny=Bot2".
{{bots|negar=todos,Bot1}} {{bots|negar=todos}} Esta declaração pode não negar alguns bots. A palavra-chave "all" não está documentada como podendo ser usada na sintaxe de vírgula.
{{nobots|negar=todos}} {{nobots}} Esta declaração pode não negar alguns bots. O redirecionamento {{ nobots }} não usa parâmetros.
{{nobots|deny=Bot1}} {{bots|negar=Bot1}} Esta declaração não pode negar o Bot1 ou também pode negar outros bots. O redirecionamento {{ nobots }} não usa parâmetros.
{{nobots|allow=Bot1}} {{bots|permitir=Bot1}} Esta declaração pode não negar alguns bots ou pode negar o Bot1. O redirecionamento {{ nobots }} não usa parâmetros.
{{bots|deny=all|optout=MassMessage}} {{bots|deny=all}}{{bots|optout=MassMessage}} Esta declaração pode não negar alguns bots. Sob uma interpretação estrita, negaria um bot chamado "all|optout=MassMessage".
{{nobots|optout=afd}} {{bots|optout=afd}} Esta declaração não pode cancelar o recebimento de mensagens afd ou também pode negar outros bots. O redirecionamento {{ nobots }} não usa parâmetros.
{{bots|optout=todos,afd}} {{bots|optout=todos}} Esta declaração pode não negar alguns bots. A palavra-chave "all" não está documentada como podendo ser usada na sintaxe de vírgula.

Observe que atualmente não existe um método 100% confiável para cancelar "all" e "MassMessage" devido à forma não padrão como "optout=MassMessage" funciona definindo uma categoria, mas {{bots|optout=all}}{{bots |optout=MassMessage}} é provavelmente sua melhor aposta (ou corrija o modelo para aplicar a categoria em "optout=all" também).

{{bots}}{{bots|deny=Bot1}} {{bots|negar=Bot1}} Esta declaração não pode negar o Bot1. Não está claro qual deve ser a prioridade entre “permitir todos os bots” e “negar Bot1”.
{{bots|permitir=todos}}{{bots|deny=Bot1}} {{bots|negar=Bot1}} Esta declaração não pode negar o Bot1. Não está claro qual deve ser a prioridade entre “permitir todos os bots” e “negar Bot1”.
{{bots|allow=Bot1}}{{bots|deny=Bot1}} {{bots|negar=todos}} Esta declaração não pode negar o Bot1. A primeira instrução deve negar todos os bots, exceto o Bot1, enquanto a segunda deve negar o Bot1, mas o Bot1 pode parar assim que vir o "permitir".

Implementação

  • Pywikibot oferece suporte a bots e nobots desde r4096. Os modelos podem ser ignorados usando um parâmetro.
  • Desde a versão 3.2.0.0, o AutoWikiBrowser suporta totalmente {{bots}} e {{nobots}}. Além disso, o pseudonome de usuário AWB pode ser especificado para banir todos os bots baseados em AWB da página. No entanto, o AWB tem a opção de ignorar esses modelos.
  • A notificação de mensagem de cancelamento foi introduzida aqui em 3 de abril de 2008. A implementação individual de bot/script irá variar e o aviso de implementação acima pode não incluir esse recurso.

Implementações de exemplo

PHP

function  permitirBots (  $text ,  $user  )  { 
    if  ( preg_match ( '/\{\{(nobots|bots\|allow=none|bots\|deny=all|bots\|optout=all|bots\|deny=. *?' .preg_quote ( $user , ' /' ) ' . *?)}}/iS' , $text )) retorna falso ; if ( preg_match ( '/\{\{(bots\|allow=all|bots\|allow=.*?' . preg_quote ( $user , '/' ) . '.*?)}}/iS' , $ texto )) retorna verdadeiro ; if ( preg_match ( '/\{\{(bots\|allow=.*?)}}/iS' , $text )) return false ; retornar verdadeiro ; }
         
      
         
      
         
     

Perl

sub permitir_bots { meu ( $texto , $usuário , $opt ) = @_ ; retorne 0 se $text =~ /{{[nN]obots}}/ ; retorne 1 se $text =~ /{{[bB]ots}}/ ; if ( $text =~ /\{\{[bB]ots\s*\|\s*allow\s*=\s*(.*?)\s*}}/s ){ retornar 1 se $1 eq 'todos' ; retorne 0 se $1 eq 'none' ; meus @bots = divisão ( /\s*,\s*/ , $1 ); return ( grep $_eq $ user , @bots ) ? 1 : 0 ; } if ( $text =~ /\{\{[bB]ots\s*\|\s*deny\s*=\s*(.*?)\s*}}/s ){ retorne 0 se $1 eq 'todos' ; retorne 1 se $1 eq 'none' ; meus @bots = divisão ( /\s*,\s*/ , $1 ); return ( grep $_eq $ user , @bots ) ? 0 : 1 ; } if ( definido ( $opt ) && $text =~ /\{\{[bB]ots\s*\|\s*optout\s*=\s*(.*?)\s*}}/s ){ retorna 0 se $1 eq 'todos' ; meu @opt = divisão ( /\s*,\s*/ , $1 ); retornar ( grep $_eq $ opt , @opt ) ? 0 : 1 ; } retornar 1 ; }  
        
        
        
     
             
             
            
                 
    
     
             
             
            
                 
    
       
             
            
                 
    
     

VB.NET

Função compartilhada pública AllowBots ( texto ByVal como string , usuário ByVal como string ) como retorno booleano , não Regex . IsMatch ( text , "\{\{(nobots|bots\|(allow=none|deny=(?!none).*(" & user . Normalize () & "|all)|optout=all))\} \}" , RegexOptions . IgnoreCase ) Função final            
            
 

C#

public static bool AllowBots ( string texto , string usuário ) { return ! Regex . IsMatch ( text , @"\{\{(nobots|bots\|(allow=none|deny=(?!none).*(" + user . Normalize () + @".*|all)|optout=all ))\}\}" , RegexOptions . IgnoreCase ); }      

           

Java

public static boolean permitirBots ( String texto , String usuário ) { return ! texto . correspondências ( "(?si).*\\{\\{(nobots|bots\\|(allow=none|deny=([^\\}]*?" + usuário + "[^\\}]* ?|todos)|optout=todos))\\}\\}.*" ); }      

           

JavaScript

função permitirBots ( texto , usuário ){ if ( ! new RegExp ( "\\{\\{\\s*(nobots|bots[^}]*)\\s*\\}\\}" , "i" ).teste ( texto ) ) retorne verdadeiro ; return ( new RegExp ( "\\{\\{\\s*bots\\s*\\|\\s*deny\\s*=\\s*([^}]*,\\s*) *" + usuário . substituir ( /([\(\)\*\+\?\.\-\:\!\=\/\^\$])/g , "\\$1" ) + "\ \s*(?=[,\\}])[^}]*\\s*\\}\\}" , "i" ). teste ( texto )) ? falso : novo RegExp ( "\\{\\{\\s*((?!nobots)|bots(\\s*\\|\\s*allow\\s*=\\s*((?! nenhum)|([^}]*,\\s*)*" + usuário . substituir ( /([\(\)\*\+\?\.\-\:\!\=\/\^\ $])/g , "\\$1" ) + "\\s*(?=[,\\}])[^}]*|todos))?|bots\\s*\\|\\s *negar\\s*=\\s*(?!todos)[^}]*|bots\\s*\\|\\s*optout=(?!todos)[^}]*)\\s *\\}\\}" , "eu" ). teste ( texto ); }  
       
                     

Pitão

Este código pressupõe que a biblioteca mwparserfromhell foi instalada e importada no script atual.

def  permitir_bots ( texto ,  usuário ): 
	usuário  =  usuário . mais baixo () . strip () 
	text  =  mwparserfromhell . analisar ( texto ) 
	para  tl  em  texto . filter_templates (): 
		se  tl . nome . matches ([ 'bots' ,  'nobots' ]): 
			break 
	else : 
		return  True 
	para  param  em  tl . parâmetros : 
		bots  =  [ x . mais baixo () . strip ()  para  x  no  parâmetro . valor . dividir ( "," )] 
		se  parâmetro . nome  ==  'permitir' : 
			se  '' . join ( bots )  ==  'none' :  retorna  False 
			para  bot  em  bots : 
				se  bot  in  ( user ,  'all' ): 
					retorna  True 
		elif  param . nome  ==  'negar' : 
			se  '' . join ( bots )  ==  'none' :  retorna  True 
			para  bot  em  bots : 
				if  bot  in  ( user ,  'all' ): 
					retorna  False 
	if  ( tl . name . matches ( 'nobots' )  e  len ( tl . params )  = =  0 ): 
		retornar  Falso 
	retornar  Verdadeiro

Veja também

  • Predefinição: Bots no Meta-Wiki
  • User:AnomiaBOT/nobots tests - Um índice de páginas para testar o tratamento de modelos de exclusão de bot.


Obtido em "https://en.wikipedia.org/w/index.php?title=Template:Bots/doc&oldid=1195245969"