قالب:Bots
هذا القالب مستخدم في عدد كبير من الصفحات (+43707) . لتفادي خلق بلبلة على نطاق واسع من الصفحات وزيادة الأعباء على الخوادم، يجب تجربة أي تعديل في هذه الصفحات الفرعية /ملعب أو /تجربة أو في ملعبك. بعدها يمكنك اضافة التعديلات دفعة واحدة، ورجاءً، لا تنسَ مناقشة أمر التعديلات أوّلًا قبل القيام بها. |
هذا القالب يستعمل لوا: |
هذا القالب يوضح للبوت أو أي أداة تحرير آلية أنه يجب ألا يقوم بتحرير الصفحة التي تحتوي هذا القالب. يُستخدم القالب لمنع مُعظم البوتات (كل البوتات التي تستخدم هذه الخاصية) أو تمنع بوتات محددة بالاسم أو تمنع وظيفة محددة. على سبيل المثال، يمكن استخدامه للسماح أو لمنع رسائل البوت أو لجعل بوتات الصيانة تتخطى صفحةٍ ما. هذا القالب يجب استخدامه بعناية خارج صفحات المستخدمين لكي لا نفقد تعديدلات مهمة للبوتات.
القوالب "البوت" و "غير البوت" تُخبر وأدوات التحرير الآلي والنصوص التي إما يجب أو لا يجب أن تحرر صفحة تحمل هذه القالب. يمكن استخدام هذه القوالب لحظر معظم البوتات (جميع البوتات التي نفذت هذه الوظيفة) أو بوتات محددة بالاسم أو الوظيفة. على سبيل المثال، يمكن استخدامها للمشاركة أو عدم المشاركة في رسائل البوت على صفحة نقاش المستخدم أو لجعل بوتات الصيانة تتجنب بعض الصفحات. يجب استخدام هذه القوالب بحذر خارج مساحة المستخدمين لتجنب حجب التعديلات المفيدة للبوت.
ملاحظات مهمة
معظم البوتات لن تفهم هذه القوالب عندما يتم تضمينها بشكل غير مباشر.
معظم البوتات لن تتجاهل القالب إذا كان داخل علامات <nowiki> ... </nowiki>. على سبيل المثال، إذا كنت تناقش القوالب مع محرر آخر، يُرجى استخدام القالب {{قا}}، مثل {{قا|Bots}}
، الذي سيعرض {{Bots}}، بدلاً من <nowiki>{{Bots}}</now>iki>
، الذي قد يُعامل على أنه محاولة لحظر البوتات من الصفحة.
استخدام القالب
الاستخدام | النتيجة |
---|---|
{{nobots}} | منع جميع البوتات (اختصار) |
{{bots}} | السماح لجميع البوتات (اختصار) |
الاستخدام | النتيجة |
---|---|
{{bots|allow=<botlist>}} |
منع جميع البوتات غير الموجودة في القائمة |
{{bots|deny=<botlist>}} |
منع جميع البوتات الموجودة في القائمة |
يتم فصل أسماء البوتات في بفاصلة <botlist> مثل:
- {{bots|allow=HagermanBot,Werdnabot}}
- {{bots|deny=AWB}}
<botlist> يكون أيضًا أن تكون قيمة الوسيط "none" أو "all" كما في الأمثلة التالية:
الاستخدام | النتيجة |
---|---|
{{bots|allow=all}} | السماح لجميع البوتات |
{{bots|allow=none}} | منع جميع البوتات |
{{bots|deny=all}} | منع جميع البوتات |
{{bots|deny=none}} | السماح لجميع البوتات |
البوتات غير ملزمة بمراعاة قالب "nobots"؛ سيعتمد ذلك على وظيفتها ومالكيها وشروط موافقتها. البوتات التي تدعم حالياً استبعاد القوالب مدرجة في بوتات يمكن استبعادها.
صيغة غير صحيحة
تبدو هذه الصيغة صحيحة، ولكن قد لا تكون لها التأثير المقصود تبعًا للبوت الفردي. قد تمنع هذه البيانات كل من بوت1 وبوت2، أو قد تمنع أحد البوتين فقط، أو تمنع كلا البوتين كما هو المقصود.
{{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}} الاختيار بعدم الاشعار برسائل استخدام عدم الترخيص للمحتوى المعني.
قيود الرسائل التي يمكن اختيار عدم استلامها
بعض إشعارات الرسائل غير مسموح بها أن تختار عدم استلامها. تشمل هذه:
- إشعارات انتهاك حقوق النشر
- تحذيرات التخريب (وغيرها)
- إشعارات SineBot بشأن عدم توقيع المشاركات
- أي علامة رسالة غير مدرجة كوسيلة للاختيار عدم استلامها أعلاه. (هل هناك واحدة يجب تضمينها؟ اترك رسالة على صفحة النقاش.)
- الرسائل الجماعية لا يمكن اختيار عدم استلامها باستخدام {{Bots|optout=all}}; يجب على المستخدمين اختيار عدم استلامها بشكل صريح باستخدام {{Bots|optout=MassMessage}}
التنفيذ
- باي ويكي بوت يدعم القالب، ويمكن تجاهل القالب من الخيارات!.
- منذ الإصدار 3.2.0.0 أوتوويكي براوزر يدعم بشكل كامل {{bots}} و {{nobots}}. بالإضافة إلى ذلك، يمكن تحديد اسم مستخدم زائف "AWB" (
|bots=deny
) لحظر جميع الروبوتات المعتمدة على AWB من الصفحة. ومع ذلك، يحتوي AWB على خيار لتجاهل هذه القوالب.
أمثلة على التنفيذ
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', $text))
return true;
if (preg_match('/\{\{(bots\|allow=.*?)}}/iS', $text))
return false;
return true;
}
Perl
sub allow_bots {
my($text, $user, $opt) = @_;
return 0 if $text =~ /{{[nN]obots}}/;
return 1 if $text =~ /{{[bB]ots}}/;
if($text =~ /\{\{[bB]ots\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 =~ /\{\{[bB]ots\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 =~ /\{\{[bB]ots\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;
}
VB.NET
Public Shared Function AllowBots(ByVal text As String, ByVal user As String) As Boolean
Return Not Regex.IsMatch(text, "\{\{(nobots|bots\|(allow=none|deny=(?!none).*(" & user.Normalize() & "|all)|optout=all))\}\}", RegexOptions.IgnoreCase)
End Function
C#
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
public static boolean allowBots(String text, String user)
{
return !text.matches("(?si).*\\{\\{(nobots|bots\\|(allow=none|deny=([^\\}]*?" + user + "[^\\}]*?|all)|optout=all))\\}\\}.*");
}
JavaScript
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.replace(/([\(\)\*\+\?\.\-\:\!\=\/\^\$])/g, "\\$1") + "\\s*(?=[,\\}])[^}]*\\s*\\}\\}", "i").test(text)) ? false : new RegExp("\\{\\{\\s*((?!nobots)|bots(\\s*\\|\\s*allow\\s*=\\s*((?!none)|([^}]*,\\s*)*" + user.replace(/([\(\)\*\+\?\.\-\:\!\=\/\^\$])/g, "\\$1") + "\\s*(?=[,\\}])[^}]*|all))?|bots\\s*\\|\\s*deny\\s*=\\s*(?!all)[^}]*|bots\\s*\\|\\s*optout=(?!all)[^}]*)\\s*\\}\\}", "i").test(text);
}
Python
يفترض هذا الكود أن مكتبة mwparserfromhell مُثبتة ومستوردة في البرنامج النصي.
def allow_bots(text, user):
user = user.lower().strip()
text = mwparserfromhell.parse(text)
for tl in text.filter_templates():
if tl.name.matches(['bots', 'nobots']):
break
else:
return True
for param in tl.params:
bots = [x.lower().strip() for x in param.value.split(",")]
if param.name == 'allow':
if ''.join(bots) == 'none': return False
for bot in bots:
if bot in (user, 'all'):
return True
elif param.name == 'deny':
if ''.join(bots) == 'none': return True
for bot in bots:
if bot in (user, 'all'):
return False
if (tl.name.matches('nobots') and len(tl.params) == 0):
return False
return True
انظر أيضًا
- {{بوت}}
- Template:Bots في Meta-Wiki