Şablon:Botlar
Bu şablon, bir sayfada botların değişiklik yapmasına müsade edilip edilmeyeceğini veya hangi botlara müsade edileceğini belirleyen bir etikettir. Talep edilmemiş bot mesajlarını kullanıcı sayfanızda almak isteyip istemediğinizi tayin etmenizi veys bakım botlarının belli sayfaları atlamalarını sağlar. Bir sayfada bu şablonu kullanarak açık bir şekilde bota verilecek tepkiyi belirlemek için, mesela varsayılan haliyle sadece {{bots}} etiketli sayfalara uğrayan bazı haberci botların belirli bir sayfayı atlamaması isteniyorsa, bu etiket sayfada kullanılarak bota izin verilir.
Kullanım
[kaynağı değiştir]Aşağıdaki şekillerde kullanılır. Kullanıldığında sayfada herhangi bir görüntü değişikliği yaratmaz. Kendi kodu da yoktur zaten; sadece botların sayfada denk gelmesi içindir. Bu etiketlerin başlıca kullanım yeri "Kullanıcı" ve "Kullanıcı mesaj" alanlarındaki sayfalarıdır; ve diğer ad alanlarındaki sayfalarda dikkatle kullanılmalıdır. Ayrıca, kullanıcılar bot uyarılarını reddetmenin sonuçlarını iyi değerlendirmeden bunu uygulamamalıdırlar; önemli uyarıları kaçırabilirler.
Sayfalarda bu şablonun kullanımını olabildiğince kısıtlı tutun, mümkünse sorunu asıl muhatabına, sizi rahatsız eden botun operatörüne söyleyin ve sayfayla ilgili problem çözülünce bu etiketi kaldırın.
Sözdizimi
[kaynağı değiştir]{{nobots}} Hiçbir bota izin yok. (kısayol) {{bots}} Tüm botlara izin var. (kısayol)
{{bots|allow=<botlist>}} Listedeki botlara izin var. {{bots|deny=<botlist>}} Listedeki botlara izin yok.
<botlist> kullanırken bot isimlerini virgülle ayırın (AWB-kaynaklı tüm botlara yönelik AWB de kullanılabilir): {{bots|allow=HagermanBot,Werdnabot}} {{bots|deny=AWB}}
<botlist> aşağıdaki örneklerdeki gibi all ('hepsi') veya none ('hiçbiri') de olabilir: {{bots|allow=all}} Hepsine izin ver. {{bots|allow=none}} Hiçbirine izin verme.
{{bots|deny=all}} Hepsini reddet. {{bots|deny=none}} Hiçbirini reddetme.
Bots are not bound to observe the nobots tag, it will depend on their functionality, their owners and their terms of approval. The bots which currently support exclusion are listed at exclusion compliant bots.
Message notification opt out
[kaynağı değiştir]Another option is to opt out of specific types of messages for users who wish to be notified of certain problems, but not others. Users should be aware that by opting-out of specific notification posts, they will not be notified of matters relating to material they have edited or uploaded, which are tagged per policy. Actions (such as deletion) may be executed without you being notified as a result. By applying this to your own user talk page, you agree to this consequence. Applying this to a user talk page other than your own will be considered vandalism. All bots and scripts that leave messages on a user's talk page are encouraged to add this capability.
By adding this to a user's talk page, a user may still receive these messages by non-compliant bots or scripts, or humans who add the tag manually.
{{bots|optout=all}} Opt out of all messages (see limitations below).
{{bots|optout=nosource}} Opt out of no source messages. {{bots|optout=nolicense}} Opt out of no license messages. {{bots|optout=orfud}} Opt out of orphaned fair use messages. {{bots|optout=norationale}} Opt out of no rationale messages. {{bots|optout=replaceable}} Opt out of replaceable fair use messages. {{bots|optout=bettersource}} Opt out of better source request messages. {{bots|optout=afd}} Opt out of articles for deletion messages or variant forms. {{bots|optout=ifd}} Opt out of images for deletion messages or variant. {{bots|optout=prod}} Opt out of prod warning messages or variant.
Items can be combined by putting a comma between options
{{bots|optout=nosource,nolicense}} Opt out of no source, and no license messages. {{bots|optout=orfud,norationale,replaceable}} Opt out of fair use messages.
Restrictions of messages that can be opted out
[kaynağı değiştir]Some message notifications are not allowed to be opted out. These include (but are not limited to):
- Copyright violation notifications
- Vandalism (and other) warning notices.
- Any message tag that isn't included as a way of opting out above. (Is there one that should be included? Leave a message on the talk page.)
Uygulama
[kaynağı değiştir]- Pywikipediabot supports bots and nobots since r4096. The templates may be ignored using a parameter.
- Since version 3.2.0.0 AutoWikiBrowser fully supports {{bots}} and {{nobots}}. Additionally, pseudo-username AWB can be specified to ban all AWB-based bots from the page. However, AWB has an option to ignore these templates.
- Opt out message notification was introduced here April 3, 2008. Individual bot/script implementation will vary and notice above of implementation may not include this feature.
Örnek uygulamalar
[kaynağı değiştir]PHP
[kaynağı değiştir]function allowBots( $text ) {
global $user;
if (preg_match('/\{\{(nobots|bots\|allow=none|bots\|deny=all|bots\|optout=all|bots\|deny=.*?'.preg_quote($user,'/').'.*?)\}\}/iS',$text)) { return false; }
return true;
}
Perl
[kaynağı değiştir]sub allowBots {
my($text, $user, $opt) = @_;
return 0 if $text =~ /{{nob[o]ts}}/;
return 1 if $text =~ /{{b[o]ts}}/;
if($text =~ /{{bots\s*\|\s*allow\s*=\s*(.*?)\s*}}/s){
return 1 if $1 eq 'all';
return 0 if $1 eq 'none';
my @bots = split(/\s*,\s*/, $1);
return (grep $_ eq $user, @bots)?1:0;
}
if($text =~ /{{bots\s*\|\s*deny\s*=\s*(.*?)\s*}}/s){
return 0 if $1 eq 'all';
return 1 if $1 eq 'none';
my @bots = split(/\s*,\s*/, $1);
return (grep $_ eq $user, @bots)?0:1;
}
if(defined($opt) && $text =~ /{{bots\s*\|\s*optout\s*=\s*(.*?)\s*}}/s){
return 0 if $1 eq 'all';
my @opt = split(/\s*,\s*/, $1);
return (grep $_ eq $opt, @opt)?0:1;
}
return 1;
}
C#
[kaynağı değiştir]public static bool AllowBots(string text, string user)
{
return !Regex.IsMatch(text, @"\{\{(nobots|bots\|(allow=none|deny=(?!none).*(" + user.Normalize() + @"|all)|optout=all))\}\}", RegexOptions.IgnoreCase);
}
Java
[kaynağı değiştir]public static boolean AllowBots(String text, String user)
{
return !Regex.Match(text, "\\{\\{(nobots|bots\\|(allow=none|deny=(.*?" + user.Normalize() + ".*?|all)|optout=all))\\}\\}", RegexOptions.IgnoreCase).Success;
}
JavaScript
[kaynağı değiştir]function allowBots(text, user){
if (!new RegExp("\\{\\{\\s*(nobots|bots[^}]*)\\s*\\}\\}", "i").test(text)) return true;
return (new RegExp("\\{\\{\\s*bots\\s*\\|\\s*deny\\s*=\\s*([^}]*,\\s*)*"+user+"\\s*(?=[,\\}])[^}]*\\s*\\}\\}", "i").test(text)) ? false : new RegExp("\\{\\{\\s*((?!nobots)|bots(\\s*\\|\\s*allow\\s*=\\s*((?!none)|([^}]*,\\s*)*"+user+"\\s*(?=[,\\}])[^}]*|all))?|bots\\s*\\|\\s*deny\\s*=\\s*(?!all)[^}]*|bots\\s*\\|\\s*optout=(?!all)[^}]*)\\s*\\}\\}", "i").test(text);
}
Python
[kaynağı değiştir]def Allowbots(text, user):
if (re.search(r'\{\{(nobots|bots\|(allow=none|deny=.*?' + user + r'.*?|optout=all|deny=all))\}\}', text)):
return False
return True
Ayrıca bakınız
[kaynağı değiştir]- Meta'da Şablon:Botlar.