Modelo: Bots

Da Wikipédia, a enciclopédia livre
Ir para navegação Pular para pesquisar
Documentação do modelo [ ver ] [ editar ] [ histórico ] [ limpar ]

Os modelos de Bots e Nobots dizem 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 essa funcionalidade) ou bots específicos por nome ou função. Por exemplo, isso pode ser usado para ativar ou desativar as mensagens do usuário talk bot ou para fazer com que os bots de manutenção evitem certas páginas. Esses modelos devem ser usados ​​com cuidado fora do espaço do usuário para evitar o bloqueio de edições úteis do bot.

O opt-in explicitamente tem a vantagem de receber mudanças úteis ou postagens direcionadas que um bot poderia pular seguindo o comportamento de "opt-out" por padrão. Os usuários devem estar cientes de que, ao optar por não receber postagens de bot, eles não serão notificados de assuntos relacionados ao material que editaram ou enviaram, 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 o problema raiz com o proprietário do bot ou comunidade de bot
  • 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ê está discutindo os modelos com outro editor, use o modelo {{ tl }}, por exemplo {{tl|nobots}}, que mostrará {{ nobots }}, ao invés de <nowiki>{{nobots}}</nowiki>, que possivelmente será analisado como a intenção de banir os bots da página .

Uma lista de transclusões está em Usuário: AnomieBOT / 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 da 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 observar o modelo dos nobots; dependerá de sua funcionalidade, seus proprietários e seus termos de aprovação. Os bots que atualmente oferecem suporte à exclusão estão listados em bots em conformidade com a exclusão .

Sintaxe incorreta

Esta sintaxe parece correta, mas dependendo do bot individual pode não ter o efeito pretendido. Esta declaração não pode negar nem Bot1 nem Bot2, apenas um dos dois bots, ou ambos os bots conforme pretendido.

{{bots | deny = Bot1 | deny = Bot2}} INCORRETO

Em vez disso, escreva:

{{bots | deny = Bot1, Bot2}}       CORRETO

Desativar notificação de mensagem

Outra opção é desativar tipos específicos de mensagens para usuários que desejam ser notificados sobre certos problemas, mas não sobre outros. Os usuários devem estar cientes de que, ao optar por não participar de postagens de notificação específicas, eles não serão notificados sobre assuntos relacionados ao material que editaram ou enviaram, 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 de usuário, você concorda com esta consequência. Aplicar isso a uma página de discussão de um usuário diferente da 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 humanos que adicionam a tag manualmente.

{{bots | optout = all}}             Optar por todas as mensagens (veja as limitações abaixo).
{{bots | optout = nosource}}        Optar por não receber mensagens de origem .
 {{bots | optout = nolicense}}       Optar por não receber mensagens de licença .
 {{bots | optout = orfud}}           Optar por não receber mensagens órfãs de uso justo .
 {{bots | optout = npd}}             Optar por não receber mensagens de permissão .
 {{bots | optout = norationale}}     Optar por não receber mensagens de justificativa .
 {{bots | optout = replaceeable}}     Optar por não receber mensagens substituíveis de uso justo .
 {{bots | optout = bettersource}}    Optar por não receber mensagens de solicitação de fontes melhores .
{{bots | optout = afd}}             Optar pela exclusão de artigos para mensagens de exclusão ou formulários variantes  .
{{bots | optout = ifd}}             Optar por não receber imagens para mensagens de exclusão ou variante .
{{bots | optout = prod}}            Desativar aviso de produção .
{{bots | optout = MassMessage}}     Optar por não receber mensagens em massa .

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

{{bots | optout = nosource, nolicense}}                  Optar por nenhuma fonte e sem mensagens de licença.
{{bots | optout = orfud, norationale, substitueable}}       Optar por não receber mensagens de uso justo.

Restrições de mensagens que podem ser excluídas

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 para não assinar posts
  4. Qualquer tag de mensagem que não seja incluída como forma de exclusão acima. (Há algum que deva ser incluído? Deixe uma mensagem na página de discussão.)
  5. Mensagens em massa não podem ser excluídas usando {{bots | optout = all}}; os usuários devem cancelar explicitamente com {{bots | optout = MassMessage}}

Implementação

  • Pywikibot suporta bots e nobots desde r4096 . Os modelos podem ser ignorados usando um parâmetro.
  • Desde a versão 3.2.0.0 AutoWikiBrowser suporta totalmente {{bots}} e {{nobots}}. Além disso, o pseudo-nome 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 exclusão foi introduzida aqui em 3 de abril de 2008. A implementação individual de bot / script pode variar e o aviso de implementação acima pode não incluir esse recurso.

Implementações de exemplo

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' ,  $ texto ))
        return  true ; 
    if  ( preg_match ( '/\{\{(bots\|allow=.*?)}}/iS' ,  $ text )) 
        return  false ; 
    return  true ; 
}

Perl

sub  allow_bots  { 
    my ( $ text ,  $ user ,  $ opt )  =  @_ ; 
    retorna  0  se  $ text  = ~ / {{[nN] obots}} / ; 
    retorna  1  se  $ text  = ~ / {{[bB] ots}} / ; 
    if ( $ text  = ~ /\{\{[bB]ots\s*\|\s*allow\s*=\s*(.*?)\s*}}/s ) { 
        return  1  if  $ 1  eq  'todos' ; 
        retorna  0  se  $ 1  eq  'nenhum' ; 
        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 ) { 
        return  0  if  $ 1  eq  'todos' ; 
        retorna  1  se  $ 1  eq  'nenhum' ; 
        meus  @bots  =  split ( / \ s *, \ s * / ,  $ 1 ); 
        Retorna ( grep  $ _  eq  $ user ,  @bots )  ?  0  :  1 ; 
    } 
    if ( defined ( $ opt )  &&  $ text  = ~ /\{\{[bB]ots\s*\|\s*optout\s*=\s*(.*?)\s*}}/s ) { 
        return  0  if  $ 1  eq  'all' ; 
        meu  @opt  =  split ( / \ s *, \ s * / ,  $ 1 ); 
        return  ( grep  $ _  eq  $ opt ,  @opt )  ?  0 :  1 ; 
    } 
    return  1 ; 
}

VB.NET

Public  Shared  Function  AllowBots ( ByVal  texto  como  corda ,  ByVal  usuário  Como  Cordas )  Como  booleana 
    Retorno  Não  Regex . IsMatch ( text ,  "\ {\ {(nobots | bots \ | (allow = none | deny = (?! none). * ("  &  User . Normalize ()  &  "| all) | optout = all)) \} \} " ,  RegexOptions . IgnoreCase ) 
Função final 

C #

públicas  estáticas  bool  AllowBots ( string de  texto ,  corda  utilizador ) 
{ 
    return  ! Regex . IsMatch ( text ,  @ "\ {\ {(nobots | bots \ | (allow = none | deny = (?! none). * ("  +  User . Normalize ()  +  @ ". * | All) | optout = all )) \} \} " ,  RegexOptions . IgnoreCase ); 
}

Java

public  static  boolean  allowBots ( String  text ,  String  user ) 
{ 
      return  ! texto . matchs ( "(? si). * \\ {\\ {(nobots | bots \\ | (allow = none | deny = ([^ \\}] *?"  +  user  +  "[^ \\}] * ? | all) | optout = all)) \\} \\}. * " ); 
}

JavaScript

função  allowBots ( texto ,  usuário ) { 
  if  ( ! new  RegExp ( "\\ {\\ {\\ s * (nobots | bots [^}] *) \\ s * \\} \\}" ,  "i" ). teste ( texto ))  return  true ; 
  return  ( new  RegExp ( "\\ {\\ {\\ s * bots \\ s * \\ | \\ s * negar \\ 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 * (?! all) [^}] * | bots \\ s * \\ | \\ s * optout = (?! all) [^}] *) \\ s * \\} \\} " ,  " i " ). teste ( texto ); 
}

Pitão

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

def  allow_bots ( texto ,  usuário ): 
	usuário  =  usuário . inferior () . strip () 
	text  =  mwparserfromhell . parse ( texto ) 
	para  tl  no  texto . filter_templates (): 
		se  tl . nome . matchs ([ 'bots' ,  'nobots' ]): 
			break 
	else : 
		return  True 
	para  param  em  tl .params : 
		bots  =  [ x . inferior () . strip ()  para  x  no  parâmetro . valor . split ( "," )] 
		se  param . nome  ==  'permitir' : 
			se  '' . join ( bots )  ==  'none' :  retorna  False 
			para  bot  em  bots : 
				se  bot  em  ( usuário ,  'all'): 
					retorna  True 
		elif  param . nome  ==  'negar' : 
			se  '' . join ( bots )  ==  'none' :  return  True 
			para  bot  em  bots : 
				if  bot  in  ( user ,  'all' ): 
					return  False 
	if  ( tl . name . match ( 'nobots' )  e  len ( tl . params ) ==  0 ): 
		return  False 
	return  True

Veja também