localp={}localfunctionmakeError(msg)msg='Lỗi trong [[Bản mẫu:Trả lời]]: '..msgreturnmw.text.tag('strong',{['class']='error'},msg)endfunctionp.replyto(frame)localorigArgs=frame:getParent().argslocalargs={}localmaxArg=1localusernames=0fork,vinpairs(origArgs)doiftype(k)=='number'thenifmw.ustring.match(v,'%S')thenifk>maxArgthenmaxArg=kendusernames=usernames+1localtitle=mw.title.new(v)ifnottitlethenreturnmakeError('Dữ liệu vào chứa các ký tự bị cấm.')endargs[k]=title.rootTextendelseifv==''andk:sub(0,5)=='label'thenargs[k]='​'elseargs[k]=vendendifusernames>(tonumber(frame.args.max)or50)thenreturnmakeError(string.format('Nhiều hơn %s tên được chỉ định.',tostring(frame.args.maxor50)))elseifusernames<1thenifframe.args.examplethenargs[1]=frame.args.exampleelsereturnmakeError('Chưa nhập tên thành viên.')endendargs['label1']=args['label1']orargs['label']localisfirst=truelocaloutStr=args['prefix']or'@'fori=1,maxArgdoifargs[i]thenifisfirstthenisfirst=falseelseif((usernames>2)or((usernames==2)and(args['c']=='')))thenoutStr=outStr..', 'endifi==maxArgthenoutStr=outStr..' '..(args['c']or'và')..' 'endendoutStr=string.format('%s[[Thành viên:%s|%s]]',outStr,args[i],args['label'..tostring(i)]orargs[i])endendoutStr=outStr..(args['p']or':')returnmw.text.tag('span',{['class']='template-ping'},outStr)endendreturnp