Advertisement
Guest User

Untitled

a guest
Oct 18th, 2017
645
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
TCL 41.46 KB | None | 0 0
  1. #############################################################################
  2. #                     BismIllah Hir-rah Manir Raheem                        #
  3. #                                                                           #
  4. #                       The Mighty Quran BOT 7.9                            #
  5. #                                                                           #
  6. #                        Make Dua for one and All.                          #
  7. #                                                                           #
  8. #############################################################################
  9.  
  10. #############################################################################
  11. #                           Do or die things.                               #
  12. #############################################################################
  13.  
  14. # Which Translation do you like to use as default. If any1 says 'Quran 1:1'
  15. # then this setting will be used. All 114 files must be there.
  16. # Options are : hq nq gq tk
  17. set tmqb(trans_default) aq
  18.  
  19. #############################################################################
  20. #                  If you wish to tweak / set it to ur choice.              #
  21. #############################################################################
  22.  
  23. # How many Ayahs will this Script allow in one command?
  24. # If its 3 then 'Quran 112:1-4' will be treated as 'Quran 112:1-3'.
  25. #set tmqb(limit_ayah) 7
  26.  
  27. # How many bytes/charecter of Quran this Script allow in one command?
  28. # If its 100 then 'Quran 5:3-4' will be treated as 'Quran 5:3'.
  29. #set tmqb(size_ayah) 600
  30.  
  31. # Name the file which u wish to use to look for Surah names for searching.
  32. # You can make your own (if you can.) This file must be in tmqb(root).
  33. set tmqb(surah_search) surah_name_search
  34.  
  35. # Enter all the Translation initails used in this script.
  36. set tmqb(trans_list) "aq nq gq hq sq ar tq tl tc tn de es fr it nl se fi ro ba mk id my uz tr tk fk ik e0 di"
  37.  
  38. #############################################################################
  39. #  Dont exceed this limit, even if you wish then do it on your own risk ;)  #
  40. #  BEWARE!!! H A R M F U L L   C O D E S   B E L O W   T H I S   L I N E .  #
  41. #############################################################################
  42.  
  43. set tmqb(version) 7.9
  44. set tmqb(name) "The Mighty Quran BOT"
  45.  
  46.   if {[info exists gaim::version]} {
  47.     namespace import gaim::*
  48.     set tmqb(log) "gaim::debug -info \"TMQB\""
  49.   } elseif {[info exists version]} {
  50.     set tmqb(log) "putlog"
  51.   } else {
  52.     set tmqb(log) "puts"
  53.   }
  54.  
  55. eval "$tmqb(log) \"Trying to load.....$tmqb(name) $tmqb(version), InshaAllah\""
  56.  
  57.  
  58. if {[info exists RT_Kit]} {
  59.   if {!$RT_Kit(version)==5} {
  60.     eval "$tmqb(log) \"*** ERROR: Can't load The Mighty Quran BOT $tmqb(version) -- First Load RT_Kit5.tcl\""
  61.     return 0
  62.   }
  63. }
  64.  
  65. #############################################################################
  66. #                               Main Codes                                  #
  67. #############################################################################
  68.  
  69. #############################################################################
  70. #                          One time initialisation                          #
  71. #############################################################################
  72.  
  73.  
  74. set tmqb(trans_list) [string tolower $tmqb(trans_list)]
  75.  
  76. eval "$tmqb(log) \"Doing one time Initialisation of Quran BOT. This will take long.....\""
  77. eval "$tmqb(log) \"Looking for Basic Working Files.\""
  78.  
  79. if {![file exist $tmqb(root)/surah_list] } {
  80.   eval "$tmqb(log) \"*** WARNING: Surah List file is missing from $tmqb(root)\""
  81. }
  82.  
  83. if {![file exist $tmqb(root)/$tmqb(surah_search)] || ![file exist $tmqb(root)/quran_extra]} {
  84.   eval "$tmqb(log) \"*** WARNING: Some working files are missing from $tmqb(root)\""
  85. }
  86. eval "$tmqb(log) \"Looking for Quran DATA Files.\""
  87.  
  88. foreach mq_tcode $tmqb(trans_list) {
  89.   set mq_files 0
  90.   for {set mq_f_no 1} {$mq_f_no<=4} {incr mq_f_no} {
  91.     if {![file exist $tmqb(root)/$mq_tcode-$mq_f_no]} {incr mq_files}
  92.   }
  93.  
  94.  if {$mq_files} {
  95.     eval "$tmqb(log) \"*** WARNING: $mq_files file(s) missing from $tmqb(root) directory. Hence disabling $mq_tcode option.\""
  96.     set tmqb(valid,$mq_tcode) 0
  97. #   set tmqb(ban1,$mq_tcode) "The Quran"
  98. #   set tmqb(ban2,$mq_tcode) "The End of Translation"
  99.     set tmqb(alias,$mq_tcode) "$mq_tcode"
  100.   } {
  101.     set tmqb(valid,$mq_tcode) 1
  102.     if {[file exist $tmqb(root)/$mq_tcode-info]} {
  103.       set tmqb(ban1,$mq_tcode) [RT_read_line $tmqb(root)/$mq_tcode-info 1]
  104.       set tmqb(ban2,$mq_tcode) [RT_read_line $tmqb(root)/$mq_tcode-info 2]
  105.       set tmqb(alias,$mq_tcode) [RT_lappend $mq_tcode [string tolower [RT_read_line $tmqb(root)/$mq_tcode-info 3]]]
  106.     } {
  107.       set tmqb(ban1,$mq_tcode) "The Quran"
  108.       set tmqb(ban2,$mq_tcode) "The End of Translation"
  109.       set tmqb(alias,$mq_tcode) "$mq_tcode"
  110.     }
  111.   }
  112. }
  113.  
  114.  
  115. if {[info exists tmqb(trans_default)]} {
  116.   if {!$tmqb(valid,$tmqb(trans_default))} {
  117.     eval "$tmqb(log) \"*** ERROR: Default Quran Data files are missing?\""
  118.     eval "$tmqb(log) \"*** ERROR: Failed to load Quran BOT\"";return 0}
  119. } { eval "$tmqb(log) \"*** ERROR: Edit your Quran Script and set tmqb(trans_default) <code>\"";
  120.   eval "$tmqb(log) \"*** ERROR: Failed to load Quran BOT\"";return 0
  121. }
  122. unset mq_files mq_tcode mq_f_no
  123.  
  124.  
  125. set tmqb(cnt_file) "0 1596 1563 1516 1561"
  126. #set tmqb(surah_name) "{} {FÂTIHA} {BAKARA} {ÂL-I IMRÂN} {NISÂ} {MÂIDE} {EN'ÂM} {A'RÂF} {ENFÂL} {TEVBE} {YÛNUS} {HÛD} {YÛSUF} {RA'D} {IBRÂHIM} {HICR} {NAHL} {ISRÂ} {KEHF} {MERYEM} {TÂ HÂ} {ENBIYÂ} {HAC} {MÜ'MINÛN} {NÛR} {FURKÂN} {SU'ARÂ} {NEML} {KASAS} {ANKEBÛT} {RÛM} {LOKMÂN} {SECDE} {AHZÂB} {SEBE'} {FÂTIR} {YÂSÎN} {SÂFFÂT} {SÂD} {ZÜMER} {MÜ'MIN} {FUSSILET} {SÛRÂ} {ZUHRUF} {DUHÂN} {CÂSIYE} {AHKÂF} {MUHAMMED} {FETIH} {HUCURÂT} {KÂF} {ZÂRIYÂT} {TÛR} {NECM} {KAMER} {RAHMÂN} {VÂKI'A} {HADÎD} {MÜCÂDELE} {HASR} {MÜMTEHINE} {SAFF} {CUM'A} {MÜNÂFIKÛN} {TEGÂBUN} {TALÂK} {TAHRÎM} {MÜLK} {KALEM} {HÂKKA} {ME'ÂRIC} {NÛH} {CIN} {MÜZZEMMIL} {MÜDDESSIR} {KIYÂME} {INSAN} {MÜRSELÂT} {NEBE'} {NÂZI'ÂT} {ABESE} {TEKVÎR} {INFITÂR} {MUTAFFIFÎN} {INSIKÂK} {BÜRÛC} {TÂRIK} {A'LÂ} {GÂSIYE} {FECR} {BELED} {SEMS} {LEYL} {DUHÂ} {INSIRÂH} {TÎN} {ALÂK} {KADR} {BEYYINE} {ZILZÂL} {ÂDIYÂT} {KÂRI'A} {TEKÂSÜR} {ASR} {HÜMEZE} {FÎL} {KUREYS} {MÂ'ÛN} {KEVSER} {KÂFIRÛN} {NASR} {TEBBET} {IHLÂS} {FELÂK} {NÂS}"
  127. set tmqb(surah_name) "{} Al-Fatihah Al-Baqarah Al-'Imran An-Nisa' Al-Ma'idah Al-An'am Al-A'raf Al-Anfal At-Taubah Yunus Hud Yusuf Ar-Ra'd Ibrahim Al-Hijr An-Nahl Al-Isra' Al-Kahf Maryam Ta-Ha Al-Anbiya' Al-Hajj Al-Mu'minun An-Nur Al-Furqan Ash-Shu'ara' An-Naml Al-Qasas Al-'Ankabut Ar-Rum Luqman As-Sajdah Al-Ahzab Saba' Fatir Ya-Sin As-Saffat Sad Az-Zumar Ghafir Fussilat Ash-Shura Az-Zukhruf Ad-Dukhan Al-Jathiya Al-Ahqaf Muhammad Al-Fath Al-Hujurat Qaf Az-Zariyat At-Tur An-Najm Al-Qamar Ar-Rahman Al-Waqi'ah Al-Hadid Al-Mujadilah Al-Hashr Al-Mumtahinah As-Saff Al-Jumu'ah Al-Munafiqun At-Taghabun At-Talaq At-Tahrim Al-Mulk Al-Qalam Al-Haqqah Al-Ma'arij Nuh Al-Jinn Al-Muzzammil Al-Muddaththir Al-Qiyamah Al-Insan Al-Mursalat An-Naba' An-Nazi'at 'Abasa At-Takwir Al-Infitar Al-Mutaffifin Al-Inshiqaq Al-Buruj At-Tariq Al-A'la Al-Ghashiyah Al-Fajr Al-Balad Ash-Shams Al-Lail Ad-Duha Ash-Sharh At-Tin Al-'Alaq Al-Qadr Al-Baiyinah Az-Zalzalah Al-'Adiyat Al-Qari'ah At-Takathur Al-'Asr Al-Humazah Al-Fil Quraish Al-Ma'un Al-Kauthar Al-Kafirun An-Nasr Al-Masad Al-Ikhlas Al-Falaq An-Nas"
  128. set tmqb(ayah_max) "0 7 286 200 176 120 165 206 75 129 109 123 111 43 52 99 128 111 110 98 135 112 78 118 64 77 227 93 88 69 60 34 30 73 54 45 83 182 88 75 85 54 53 89 59 37 35 38 29 18 45 60 49 62 55 78 96 29 22 24 13 14 11 11 18 12 12 30 52 52 44 28 28 20 56 40 31 50 40 46 42 29 19 36 25 22 17 19 26 30 20 15 21 11 8 8 19 5 8 8 11 11 8 3 9 5 4 7 3 6 3 5 4 5 6"
  129. set tmqb(sajdah) "0 1160 1722 1951 2138 2308 2613 2672 2915 3185 3518 3994 4256 4846 5905 6125"
  130. set tmqb(ruku_list) "0 7 14 27 36 46 53 66 68 78 89 93 103 110 119 128 136 148 155 159 170 174 183 189 195 203 217 223 228 235 238 242 249 255 260 264 267 273 280 288 290 293 302 313 323 334 347 356 364 373 384 394 402 413 422 436 441 448 464 473 482 493 503 507 515 518 526 535 543 552 563 569 580 584 589 593 597 605 608 619 627 634 645 655 664 669 674 680 688 695 703 712 719 725 735 746 755 762 769 777 784 789 799 809 819 830 839 844 849 859 871 879 883 889 899 910 918 929 933 939 943 954 964 979 985 993 1001 1007 1012 1018 1026 1038 1047 1053 1062 1080 1083 1095 1101 1105 1111 1116 1125 1135 1142 1160 1170 1179 1188 1197 1204 1208 1218 1224 1229 1235 1241 1251 1259 1264 1272 1277 1294 1301 1307 1315 1324 1334 1345 1353 1357 1364 1374 1384 1394 1404 1417 1424 1434 1446 1456 1467 1473 1481 1497 1508 1522 1533 1541 1556 1568 1582 1596 1602 1616 1625 1631 1638 1645 1653 1664 1675 1689 1700 1707 1714 1725 1733 1738 1744 1750 1756 1762 1771 1777 1784 1791 1802 1817 1827 1846 1862 1881 1901 1910 1922 1926 1935 1941 1951 1961 1966 1971 1977 1984 1990 2001 2011 2020 2029 2039 2051 2059 2069 2081 2089 2099 2106 2113 2122 2129 2140 2152 2157 2163 2171 2184 2189 2193 2199 2210 2222 2241 2250 2265 2290 2300 2315 2332 2348 2372 2402 2424 2437 2452 2463 2483 2493 2512 2524 2533 2558 2576 2595 2605 2617 2620 2628 2633 2643 2652 2659 2667 2673 2695 2705 2723 2750 2765 2791 2801 2811 2817 2825 2831 2841 2848 2852 2855 2864 2875 2889 2899 2915 2932 2941 2965 2983 3000 3036 3054 3072 3091 3107 3123 3159 3165 3173 3190 3203 3217 3225 3241 3252 3265 3273 3280 3294 3302 3312 3327 3334 3340 3353 3362 3370 3384 3391 3403 3409 3419 3428 3436 3449 3462 3469 3480 3488 3499 3503 3514 3525 3533 3541 3553 3560 3567 3573 3585 3591 3601 3606 3615 3627 3636 3642 3651 3660 3667 3674 3686 3697 3705 3717 3737 3755 3772 3788 3809 3862 3901 3926 3970 3984 3996 4010 4034 4058 4067 4079 4089 4099 4110 4121 4128 4133 4142 4153 4160 4170 4183 4193 4201 4211 4218 4223 4226 4235 4243 4250 4262 4272 4281 4291 4301 4315 4325 4340 4350 4360 4370 4381 4392 4414 4436 4443 4456 4473 4484 4494 4499 4510 4520 4530 4536 4545 4556 4563 4573 4583 4593 4600 4609 4612 4622 4630 4645 4659 4675 4698 4721 4735 4763 4784 4809 4816 4846 4868 4886 4901 4926 4946 4979 5017 5053 5075 5085 5094 5100 5104 5110 5117 5126 5136 5143 5150 5156 5163 5172 5177 5185 5188 5196 5199 5209 5217 5224 5229 5236 5241 5255 5271 5304 5323 5360 5375 5410 5419 5439 5447 5466 5475 5494 5495 5526 5551 5581 5591 5613 5622 5662 5672 5702 5712 5738 5758 5800 5829 5848 5884 5905 5909 5931 5948 5967 5993 6023 6043 6058 6079 6090 6098 6106 6125 6130 6138 6146 6157 6168 6176 6179 6188 6193 6197 6204 6207 6213 6216 6221 6225 6230 6236"
  131. set tmqb(total) [total_from_list $tmqb(ayah_max)]
  132. set tmqb(emph_wrds) "Allah Muhammad Quran Qur\'an Merciful Paradise {Hell Fire} Forgiveness messenger prophet obey follow love"
  133. set tmqb(ban1,al) "Multiple Translation of the Quran"
  134. set tmqb(ban2,al) "For more info type: Quran Translations"
  135. set tmqb(alias,ar) "ar ÚÑÈ* {ÚÑ È*}"
  136.  
  137. proc tmqb_cs_irc { } {
  138.   global tmqb
  139.   set tmqb(c,1s) 00,03
  140.   set tmqb(c,1e) 
  141.   set tmqb(c,2s) 01,15
  142.   set tmqb(c,2e) 
  143.   set tmqb(c,hl) 08
  144.   set tmqb(c,rs) 
  145.   set tmqb(c,re) 
  146.   set tmqb(c,bs) 
  147.   set tmqb(c,be) 
  148.   set tmqb(c,us) 
  149.   set tmqb(c,ue) 
  150.   set tmqb(c,Bs) 02
  151.   set tmqb(c,Be) 
  152.   set tmqb(c,Ls) 12
  153.   set tmqb(c,Le) 
  154.   set tmqb(c,Rs) 04
  155.   set tmqb(c,Re) 
  156.   set tmqb(c,Gs) 14
  157.   set tmqb(c,Ge) 
  158.   set tmqb(c,0s) 00
  159.   set tmqb(c,0e) 
  160.   set tmqb(limit_ayah) 7
  161.   set tmqb(size_ayah) 600
  162.   set tmqb(length_ayah) 380
  163. }
  164.    
  165. proc tmqb_cs_yahoo { } {
  166.   global tmqb
  167.   set tmqb(c,1s) "<font face=\"Fixedsys\"><font size=\"3\" absz=\"12\"><font color=\"#008F00\"><b>"
  168.   set tmqb(c,1e) "</b></font></font>"
  169.   set tmqb(c,2s) "<font face=\"Fixedsys\"><font size=\"4\" absz=\"14\"><font color=\"#7F0000\">"
  170.   set tmqb(c,2e) "</font></font>"
  171.   set tmqb(c,hl) "<font color=\"#00F700\">"
  172.   set tmqb(c,rs) "<i>"
  173.   set tmqb(c,re) "</i>"
  174.   set tmqb(c,bs) "<b>"
  175.   set tmqb(c,be) "</b>"
  176.   set tmqb(c,us) "<u>"
  177.   set tmqb(c,ue) "</u>"
  178.   set tmqb(c,Bs) "<font color=\"#00007F\">"
  179.   set tmqb(c,Be) "</font>"
  180.   set tmqb(c,Ls) "<font color=\"#8000FF\">"
  181.   set tmqb(c,Le) "</font>"
  182.   set tmqb(c,Rs) "<font color=\"#FF0000\">"
  183.   set tmqb(c,Re) "</font>"
  184.   set tmqb(c,Gs) "<font color=\"#7F7F7F\">"
  185.   set tmqb(c,Ge) "</font>"
  186.   set tmqb(c,0s) "<font color=\"#000000\">"
  187.   set tmqb(c,0e) "</font>"
  188.   set tmqb(limit_ayah) 10
  189.   set tmqb(size_ayah) 9999
  190.   set tmqb(length_ayah) 400
  191. }
  192.  
  193. proc tmqb_cs_html { } {
  194.   global tmqb
  195.   set tmqb(c,1s) "<table border=0><tr><td colspan=2><font face=\"Fixedsys\"><font color=\"#008F00\"><b>"
  196.   set tmqb(c,1e) "</b></font></font></td></tr></table>"
  197.   set tmqb(c,2s) "<table border=0><tr><td><font face=\"Fixedsys\"><font color=\"#7F0000\">"
  198.   set tmqb(c,2e) "</font></font></td></tr></table>"
  199.   set tmqb(c,hl) "<font color=\"#00F700\">"
  200.   set tmqb(c,rs) "<i>"
  201.   set tmqb(c,re) "</i>"
  202.   set tmqb(c,bs) "<b>"
  203.   set tmqb(c,be) "</b>"
  204.   set tmqb(c,us) "<u>"
  205.   set tmqb(c,ue) "</u>"
  206.   set tmqb(c,Bs) "<font color=\"#00007F\">"
  207.   set tmqb(c,Be) "</font>"
  208.   set tmqb(c,Ls) "<font color=\"#8000FF\">"
  209.   set tmqb(c,Le) "</font>"
  210.   set tmqb(c,Rs) "<font color=\"#FF0000\">"
  211.   set tmqb(c,Re) "</font>"
  212.   set tmqb(c,Gs) "<font color=\"#7F7F7F\">"
  213.   set tmqb(c,Ge) "</font>"
  214.   set tmqb(c,0s) "<font color=\"#000000\">"
  215.   set tmqb(c,0e) "</font>"
  216.   set tmqb(limit_ayah) 20
  217.   set tmqb(size_ayah) 9999
  218.   set tmqb(length_ayah) 99999
  219. }
  220.  
  221.  
  222. #set web_color(0) "#FFFFFF"
  223. #set web_color(1) "#000000"
  224. #set web_color(2) "#00007F"
  225. #set web_color(3) "#008F00"
  226. #set web_color(4) "#FF0000"
  227. #set web_color(5) "#7F0000"
  228. #set web_color(6) "#9F009F"
  229. #set web_color(7) "#FF7F00"
  230. #set web_color(8) "#F0FF00"
  231. #set web_color(9) "#00F700"
  232. #set web_color(10) "#008F8F"
  233. #set web_color(11) "#00F7FF"
  234. #set web_color(12) "#0000FF"
  235. #set web_color(13) "#FF00FF"
  236. #set web_color(14) "#7F7F7F"
  237. #set web_color(15) "#CFCFCF"
  238.  
  239.  
  240.  
  241.  
  242.  
  243. #  set tmqb(c,1s) 00,02            # Banner Line Start
  244. #  set tmqb(c,1e)                  # Banner Line End
  245. #  set tmqb(c,2s) 02,15            # Body Line Start
  246. #  set tmqb(c,2e)                  # Body Line End
  247. #  set tmqb(c,hl) 02,08            # Highlighted words
  248. #  set tmqb(c,rs)                  # Reverse Start
  249. #  set tmqb(c,re)                  # Reverse End
  250. #  set tmqb(c,bs)                  # Bold Start
  251. #  set tmqb(c,be)                  # Bold End
  252. #  set tmqb(c,us)                   # Underline Start
  253. #  set tmqb(c,ue)                   # Underline End
  254. #  set tmqb(c,Rs) 03               # Red Start
  255. #  set tmqb(c,Re)                  # Red End
  256. #  set tmqb(c,Gs) 14               # Gray End
  257. #  set tmqb(c,Ge)                  # Gray End
  258.  
  259.  
  260.  
  261. #############################################################################
  262. #          Following codes are used to perform IRC Parsings.                #
  263. #############################################################################
  264.  
  265.  
  266. proc tmqb_main {who mq_args} {
  267.   global tmqb
  268.   set mq_trans_requ ""
  269.   set who [string tolower $who]
  270.  
  271.   if {[string match "html_*" $who]} { tmqb_cs_html }
  272.      
  273.   if {![info exists tmqb(last,$who)]} { set tmqb(last,$who) 0 }
  274.   if {![info exists tmqb(tran,$who)]} { set tmqb(tran,$who) $tmqb(trans_default) }
  275.  
  276.   foreach mq_arg_vrb [string tolower $mq_args] {lappend mq_arg $mq_arg_vrb}
  277.   #[stripcodes bcru $mq_args]
  278.   #set mq_arg [lrange $mq_arg 1 end]
  279.  
  280.   foreach mq_trans_check $mq_arg {
  281.     foreach mq_tcode $tmqb(trans_list) {
  282.       foreach mq_alias_in $tmqb(alias,$mq_tcode) {
  283.         if {[string match $mq_alias_in $mq_trans_check]} {
  284.           set mq_trans_requ [RT_lappend $mq_trans_requ $mq_tcode]
  285.           set mq_arg [lreplace $mq_arg [lsearch $mq_arg $mq_alias_in] [lsearch $mq_arg $mq_alias_in]]
  286.           set mq_trans_found 1
  287.         }
  288.       }
  289.     }
  290.   }
  291.  
  292.   if {![info exists mq_trans_found]} {
  293.     set mq_trans_requ $tmqb(tran,$who)
  294.   }
  295.   set mq_trans [lindex $mq_trans_requ 0]
  296.  
  297.   set mq_ret_val [switch -glob [lindex $mq_arg 0] {
  298.     [0-9]* {format 0}
  299.     save {
  300.       tmqb_save
  301.     }
  302.     auto {
  303.       return [tmqb_main auto_$who "$mq_trans [lrange $mq_arg 1 end] ="]
  304.     }
  305.     reader {
  306.       global RT_Kit rh_timer
  307.       if { [lindex $mq_arg 1] == "stop" } {
  308.         if {[info exists tmqb(reader,$who,count)]} { set tmqb(reader,$who,count) -1 }
  309.         if {[info exists tmqb(reader,$who,buffer)]} { set tmqb(reader,$who,buffer) "" }
  310.         if {[info exists tmqb(reader,$who,timer)]} {catch killtimer $tmqb(reader,$who,timer)}
  311.         return [list "Reader Stopped"]
  312.       }
  313.       if { [lindex $mq_arg 1] == "speed" } {
  314.         if {[lindex $mq_arg 2]>3} {
  315.           set tmqb(reader,$who,speed) [lindex $mq_arg 2]
  316.           return [list "Setting Speed to [lindex $mq_arg 2]"]
  317.         } {
  318.           return [list "Speed [lindex $mq_arg 2] not set - using old speed $tmqb(reader,$who,speed) - Minimum Speed can be 4."]
  319.         }
  320.       }
  321.  
  322.       if { [lrange $mq_arg 1 end] != "" } {
  323.         variable mq_idx1 1  mq_idx2 1  mq_idx3 1
  324.         if {![info exists tmqb(reader,$who,speed)]} { set tmqb(reader,$who,speed) 10 }
  325.  
  326.         set mq_scanarg [split [lrange $mq_arg 1 end] :-.\;\ ]
  327.         scan [lrange $mq_scanarg 0 3] "%d %d %d" mq_idx1 mq_idx2 mq_idx3
  328.  
  329.         if { $mq_idx3 > 100} {
  330.           set tmqb(reader,$who,count) 100
  331.         } {
  332.           set tmqb(reader,$who,count) $mq_idx3
  333.         }
  334.  
  335.         set tmqb(reader,$who,trans) $mq_trans_requ
  336.         set tmqb(reader,$who,buffer) [tmqb_main $who "$tmqb(reader,$who,trans) $mq_idx1:$mq_idx2 %"]
  337.         incr tmqb(reader,$who,count) -1
  338.  
  339.         if {[info exists tmqb(reader,$who,timer)]} {catch killtimer $tmqb(reader,$who,timer)}
  340.  
  341.         set tmqb(reader,$who,timer) [utimer 7 "tmqb_main $who reader"] ; putlog timer-set
  342.         return [list "$tmqb(c,1s) Now showing Quran from $mq_idx1:$mq_idx2 and continuing upto [expr $tmqb(reader,$who,count)+1] verses. At speed level $tmqb(reader,$who,speed) $tmqb(c,1e)"]
  343.       } {
  344.         if {![info exists tmqb(reader,$who,buffer)]} { set tmqb(reader,$who,buffer) "" }
  345.         if {[llength $tmqb(reader,$who,buffer)]==0} {
  346.           set tmqb(reader,$who,buffer) [tmqb_main $who "$tmqb(reader,$who,trans) next %"]
  347.           incr tmqb(reader,$who,count) -1
  348.         }
  349.         set mq_reptxt [lindex $tmqb(reader,$who,buffer) 0]
  350.         set tmqb(reader,$who,buffer) [lrange $tmqb(reader,$who,buffer) 1 end]
  351.         set mq_secs [expr 5+([string length $mq_reptxt]/$tmqb(reader,$who,speed))]
  352.  
  353.         if {$tmqb(reader,$who,count)>0 || [llength $tmqb(reader,$who,buffer)]>0} { set tmqb(reader,$who,timer) [utimer $mq_secs "tmqb_main $who reader"] }
  354.  
  355.         if {![info exist RT_Kit(buffer,$who)]} { after 100 "RT_Queue_IRC $who" }
  356.         lappend RT_Kit(buffer,$who) "4\[ 0,14 $mq_reptxt  4\] \00315$mq_secs $tmqb(reader,$who,count) more 0,0_______________________________________________________________________"
  357.         #rh_set_timer Reader reader@quranbot.com - $who -
  358.         set rh_timer($who,cnt) 100
  359.       }
  360.  
  361.       return 1
  362.     }
  363.     info {
  364.       lappend mq_reptxt "$tmqb(c,1s) [RT_read_line $tmqb(root)/$mq_trans-info 11] $tmqb(c,0s)$tmqb(version). $tmqb(c,1e)"
  365.       lappend mq_reptxt "$tmqb(c,2s) [RT_read_line $tmqb(root)/$mq_trans-info 12] $tmqb(c,2e)"
  366.       lappend mq_reptxt "$tmqb(c,2s) [RT_read_line $tmqb(root)/$mq_trans-info 13] $tmqb(c,2e)"
  367.       lappend mq_reptxt "$tmqb(c,2s) [RT_read_line $tmqb(root)/$mq_trans-info 14] $tmqb(c,2e)"
  368.       lappend mq_reptxt "$tmqb(c,1s) Aliases are [string toupper $tmqb(alias,$mq_trans)] - [RT_read_line $tmqb(root)/$mq_trans-info 15] $tmqb(c,1e)"
  369.       return $mq_reptxt
  370.     }
  371.     topic {
  372.       if {[lindex $mq_arg 1]==""} {return [list "Syntax: Quran Topic #Channel <Command>"] }
  373.  
  374.       if {[lindex $mq_arg 2]==""} {set mq_topic [tmqb_main $who {Random !@=}]} {
  375.         set mq_topic [tmqb_main $who [concat [lrange $mq_arg 2 end] =]]}
  376.  
  377.       set mq_topic [lindex $mq_topic 0]
  378.       if {[string length $mq_topic]>235} {return [list " This Ayah is too long for Topic. "]}
  379.  
  380.       putserv "TOPIC [lindex $mq_arg 1] :$mq_topic"
  381.       return [list "Setting Topic of [lindex $mq_arg 1] to $mq_topic"]
  382.     }
  383.     set {
  384.       if {[info exist [lindex $mq_args 1]]} {
  385.         if {[lindex $mq_args 2]==""} {
  386.           return [list "$[lindex $mq_args 1] = [expr $[lindex $mq_args 1]]"]
  387.         } {
  388.           set mq_old_arg [expr $[lindex $mq_args 1]]
  389.           set [lindex $mq_args 1] [lrange $mq_args 2 end]
  390.           return [list "Setting [lindex $mq_args 1] from $mq_old_arg to [lrange $mq_args 2 end]"]
  391.         }
  392.       } {
  393.         return [list "Theres no variable like [lindex $mq_args 1]."]}
  394.     }
  395.     help {
  396.       set mq_reptxts [list "$tmqb(c,1s) Help System for $tmqb(name) $tmqb(c,0s)V$tmqb(version) $tmqb(c,1e)"]
  397.       if {[lindex $mq_args 1] == "" } { set mq_help_topic help } { set mq_help_topic [lindex $mq_args 1] }
  398.       if {[file exist $tmqb(root)\quran_extra]} {
  399.     set mq_reptxt [RT_read_topic $tmqb(root)\quran_extra $mq_help_topic*]
  400.       } {return [list " File not found. "]}
  401.      
  402.       foreach mq_t $mq_reptxt {
  403.         lappend mq_reptxts "$tmqb(c,2s) [eval list $mq_t] $tmqb(c,2e)"
  404.       }
  405.       return $mq_reptxts
  406.     }
  407.     transla* {
  408.       lappend mq_tlist "$tmqb(c,1s) Followings are Translations and Translitrations available on this BOT $tmqb(c,1e)"
  409.       foreach mq_trans $tmqb(trans_list) {
  410.         if {!$tmqb(valid,$mq_trans)} {continue}
  411. #       lappend mq_tlist "$tmqb(c,2s) [string toupper $mq_trans] $tmqb(ban1,$mq_trans) : $tmqb(ban2,$mq_trans) Aliase are: $tmqb(alias,$mq_trans) $tmqb(c,2e) "
  412.         lappend mq_tlist "$tmqb(c,2s) $tmqb(c,rs)[string toupper $mq_trans]$tmqb(c,re) [lindex $tmqb(alias,$mq_trans) 1] Aliase are: $tmqb(alias,$mq_trans) $tmqb(c,2e) "
  413.       }
  414.       lappend mq_tlist "$tmqb(c,1s) If you want Translations to be added/modified then contact on quran.noble@gmail.com $tmqb(c,1e)"
  415.       return $mq_tlist
  416.     }
  417.     list {
  418.       lappend mq_tlist "$tmqb(c,1s) Followings are Translations and Translitrations available on this BOT $tmqb(c,1e)"
  419.       foreach mq_trans $tmqb(trans_list) {
  420.         if {!$tmqb(valid,$mq_trans)} {continue}
  421.         append mq_tlists "$tmqb(c,2s) $tmqb(c,rs)[string toupper $mq_trans]$tmqb(c,re) [string totitle [lindex $tmqb(alias,$mq_trans) 1]] $tmqb(c,2e) "
  422.       }
  423.       lappend mq_tlist $mq_tlists
  424.       lappend mq_tlist "$tmqb(c,1s) If you want Translations to be added/modified then contact on quran.noble@gmail.com $tmqb(c,1e)"
  425.       return $mq_tlist
  426.     }
  427.     settran* {
  428.       set tmqb(tran,$who) $mq_trans_requ
  429.       foreach mq_trans $mq_trans_requ { append mq_tlists "[string totitle [lindex $tmqb(alias,$mq_trans) 1]] " }
  430.       return [list "Setting Default Translation as $tmqb(c,Rs)$mq_tlists$tmqb(c,Re)- Just type $tmqb(c,Bs)Quran Surah-No Ayah-No and you will see Quran in $tmqb(c,Rs)$mq_tlists$tmqb(c,Re) $tmqb(c,Be)" ]
  431.     }
  432.     surah - chapter {
  433.       set mq_surah_cnt 1
  434.       for {set mq_surah_line 1} {$mq_surah_line<=6} {incr mq_surah_line} {
  435.         for {set mq_surah_counter 1} {$mq_surah_counter<20} {incr mq_surah_counter} {
  436.           append mq_surah_out "$tmqb(c,rs)$mq_surah_cnt$tmqb(c,re).$tmqb(c,Ls)[lindex $tmqb(surah_name) $mq_surah_cnt]-$tmqb(c,Rs)[lindex $tmqb(ayah_max) $mq_surah_cnt] "
  437.           incr mq_surah_cnt
  438.         }
  439.       lappend mq_reptxt $mq_surah_out
  440.       set mq_surah_out ""
  441.       }
  442.       return $mq_reptxt
  443.     }
  444.     context {
  445.       set mq_scanarg [split $mq_arg :-.\ ]
  446.       set mq_rukulook [index2serial [lindex $mq_scanarg 1] [lindex $mq_scanarg 2] $tmqb(ayah_max)]
  447.       set mq_rukufirst [lindex $tmqb(ruku_list) 0]
  448.  
  449.       foreach mq_ruku $tmqb(ruku_list) {
  450.         if { $mq_ruku >= $mq_rukulook } {
  451.           set mq_rukulast $mq_ruku
  452.           break } {
  453.           set mq_rukufirst $mq_ruku }
  454.       }
  455.       set mq_rukuout1 [serial2index [expr $mq_rukufirst+1] $tmqb(ayah_max)]
  456.       set mq_rukuout2 [serial2index $mq_rukulast $tmqb(ayah_max)]
  457.       set mq_arg "[lindex $mq_rukuout1 0]:[lindex $mq_rukuout1 1]-[lindex $mq_rukuout2 1] [lrange $mq_arg 3 end]"
  458.       format 0
  459.     }
  460.     ruku {
  461.       set mq_scanarg [split $mq_arg :-.\ ]
  462.       set mq_rukulook [index2serial [lindex $mq_scanarg 1] [lindex $mq_scanarg 2] $tmqb(ayah_max)]
  463.       set mq_rukufirst [lindex $tmqb(ruku_list) 0]
  464.  
  465.       foreach mq_ruku $tmqb(ruku_list) {
  466.         if { $mq_ruku >= $mq_rukulook } {
  467.           set mq_rukulast $mq_ruku
  468.           break } {
  469.           set mq_rukufirst $mq_ruku }
  470.       }
  471.       set mq_rukuout1 [serial2index [expr $mq_rukufirst+1] $tmqb(ayah_max)]
  472.       set mq_rukuout2 [serial2index $mq_rukulast $tmqb(ayah_max)]
  473.       return [list "$tmqb(c,1s) Context for [lindex $mq_arg 1]:[lindex $mq_arg 2] is [lindex $mq_rukuout1 0]:[lindex $mq_rukuout1 1]-[lindex $mq_rukuout2 1] which is the [lsearch $tmqb(ruku_list) $mq_rukulast] of 561 Ruku/Bending. $tmqb(c,1e)" ]
  474.     }
  475.     show {
  476.       if {![info exist tmqb(ser,$who:rslt)]} { return [list "$tmqb(c,1s) First do a successful search then try this command. $tmqb(c,1e)"] }
  477.       set mq_rslt_len [llength $tmqb(ser,$who:rslt)]
  478.       if {[llength $tmqb(ser,$who:rslt)]} {
  479.         for {set mq_a_no 1} {$mq_a_no<=[expr $mq_rslt_len>3?3:$mq_rslt_len]} {incr mq_a_no} {
  480.           foreach mq_rslt [tmqb_main $who "[lindex $tmqb(ser,$who:tran) 0] [serial2index [lindex $tmqb(ser,$who:rslt) 0] $tmqb(ayah_max)] =[lrange $mq_arg 1 3]"] { lappend mq_reptxt $mq_rslt }
  481.           set tmqb(ser,$who:rslt) [lrange $tmqb(ser,$who:rslt) 1 end]
  482.         }
  483.       } { return [list "$tmqb(c,1s) No more search results. $tmqb(c,1e)"] }
  484.       return [RT_emph $mq_reptxt $tmqb(ser,$who:word) $tmqb(c,hl) $tmqb(c,2s)]
  485.     }
  486.     search {return [mq_search $who $mq_trans_requ [lrange $mq_arg 1 end]]}
  487.     rand* {expr int($tmqb(total) * rand())}
  488.     last  {expr $tmqb(last,$who)}
  489.     next  {expr [expr $tmqb(last,$who)+1>$tmqb(total)]?[format 1]:[expr $tmqb(last,$who)+1]}
  490.     prev* {expr [expr $tmqb(last,$who)-1<=0]?[format $tmqb(total)]:[expr $tmqb(last,$who)-1]}
  491.  
  492.     [a-z']* {
  493.      set mq_vrbcnt 0
  494.      set mq_sname ""
  495.  
  496.      foreach mq_wrdlist $mq_arg {
  497.      if {[string match \[0-9\]* $mq_wrdlist]} {break} {set mq_sname "$mq_sname $mq_wrdlist";incr mq_vrbcnt} }
  498.      
  499.      set mq_sfile [open $tmqb(root)$tmqb(surah_search)]
  500.      for {set mq_surah_num 1} {$mq_surah_num<=114} {incr mq_surah_num} {
  501.        set mq_surah_list [string tolower [gets $mq_sfile]]
  502.        if {[string match "*>$mq_sname >*" $mq_surah_list]} {
  503.          set mq_arg "$mq_surah_num [lrange $mq_arg $mq_vrbcnt end]"
  504.        }
  505.      }
  506.      close $mq_sfile
  507.      format 0
  508.    }
  509.  default {format 0}
  510.  }]
  511.  
  512.  if {$mq_ret_val} {set mq_arg "[serial2index $mq_ret_val $tmqb(ayah_max)] [lrange $mq_arg 1 3]"}
  513.  tmqb_irc $who $mq_trans_requ $mq_arg
  514. }
  515.  
  516. #############################################################################
  517. #          Following codes are used to perform irc postings.                #
  518. #############################################################################
  519.  
  520. proc tmqb_irc {who mq_trans_requ mq_arg} {
  521.  global tmqb
  522.  set mq_idx1 -1 ; set mq_idx2 0 ; set mq_idx3 0
  523.  set mq_scanarg [split $mq_arg :-.\;\ ]
  524.  scan [lrange $mq_scanarg 0 2] "%d %d %d" mq_idx1 mq_idx2 mq_idx3
  525.  set mq_opt [lrange $mq_scanarg 2 5]
  526.  set mq_max_idx2 [lindex $tmqb(ayah_max) $mq_idx1]
  527. # set mq_s_time [clock clicks -milliseconds]
  528.  
  529.  if {$mq_idx1==-1} { error " Ignoring wrong inputs $who $mq_arg "}
  530.  
  531.  if {![expr ($mq_idx1<=114) && ($mq_idx1>=1)]} {
  532.    return [list " There are only 114 Surah in Quran. "]
  533.  }
  534.  
  535.  if {![expr ($mq_idx2>=1) && ($mq_idx2<=$mq_max_idx2)]} {
  536.    set mq_sd_text [RT_read_line $tmqb(root)/surah_list $mq_idx1]
  537.    return [list "$tmqb(c,1s) This is Surah No:[lindex $mq_sd_text 0] containing [lindex $mq_sd_text 1] Ayah. Its chronological Order is [lindex $mq_sd_text 2] and was revealed in [lindex $mq_sd_text 3]. This Surah is known by these names: [lrange $mq_sd_text 4 end] $tmqb(c,1e)"]
  538.  }
  539.  
  540.  if {$mq_idx3>$mq_max_idx2} {set mq_idx3 $mq_max_idx2}
  541.  if {$mq_idx3<$mq_idx2} {set mq_idx3 $mq_idx2}
  542.  if {[expr $mq_idx3-$mq_idx2+1]>$tmqb(limit_ayah)} {set mq_idx3 [expr $mq_idx2+$tmqb(limit_ayah)-1]}
  543.  
  544.  set mq_size [expr [string match *\#* $mq_opt]?70:$tmqb(length_ayah)]
  545.  set mq_emp1 [expr [string match *\@* $mq_opt]?"rs":"1s"]
  546.  set mq_emp2 [expr [string match *\@* $mq_opt]?"re":"1e"]
  547.  set mq_emp3 [expr [string match *\@* $mq_opt]?"bs":"2s"]
  548.  set mq_emp4 [expr [string match *\@* $mq_opt]?"be":"2e"]
  549.  set mq_cond [expr [string match *\=* $mq_opt] || [string match *\%* $mq_opt]?1:0]
  550.  
  551.  set mq_caps [expr [string match *\!* $mq_opt]?1:0]
  552.  set mq_idx_srl [index2serial $mq_idx1 $mq_idx2 $tmqb(ayah_max)]
  553.  set mq_file_no [lindex [serial2index $mq_idx_srl $tmqb(cnt_file)] 0]
  554.  
  555. if {[llength $mq_trans_requ]>1} {
  556.    set mq_line_no [lindex [serial2index $mq_idx_srl $tmqb(cnt_file)] 1]
  557.    foreach mq_tcode $mq_trans_requ {
  558.      if {!$tmqb(valid,$mq_tcode)} {continue}
  559.      [expr $mq_cond?"append":"lappend"] mq_txt_out "$tmqb(c,rs)[string toupper $mq_tcode]$tmqb(c,re): [RT_read_line $tmqb(root)/$mq_tcode-$mq_file_no $mq_line_no][expr $mq_cond?\" \":\"\"]"
  560.      set mq_idx2_last $mq_idx2
  561.    }
  562.    set mq_reptxt_bn1 "$tmqb(c,$mq_emp1) $tmqb(ban1,al) Surah:$mq_idx1.[lindex $tmqb(surah_name) $mq_idx1]. Ayah:$mq_idx2 $tmqb(c,$mq_emp2)"
  563.    set mq_reptxt_bn2 "$tmqb(c,$mq_emp1) $tmqb(ban2,al) $tmqb(c,0s)V$tmqb(version) $tmqb(c,$mq_emp2)"
  564.  } {
  565.    set mq_tcode $mq_trans_requ
  566.    if {!$tmqb(valid,$mq_trans_requ)} {return [list "This option is disabled! Files are missing."]}
  567.  
  568.    for {set mq_idx2_counter $mq_idx2} {$mq_idx2_counter<=$mq_idx3} {incr mq_idx2_counter} {
  569.      set mq_idx2_serial [index2serial $mq_idx1 $mq_idx2_counter $tmqb(ayah_max)]
  570.      set mq_line_no [lindex [serial2index $mq_idx2_serial $tmqb(cnt_file)] 1]
  571.      set mq_sajd_mark [lsearch $tmqb(sajdah) $mq_idx2_serial]
  572.      set mq_ruku_mark [lsearch $tmqb(ruku_list) $mq_idx2_serial]
  573.      set mq_marks "[expr $mq_ruku_mark>=1?\"®$mq_ruku_mark®\":\"\"][expr $mq_sajd_mark>=1?\"©$mq_sajd_mark©\":\"\"]"
  574.      [expr $mq_cond?"append":"lappend"] mq_txt_out "$mq_idx2_counter.[expr $mq_cond?\"\":\" \"][RT_read_line $tmqb(root)/$mq_trans_requ-$mq_file_no $mq_line_no]$mq_marks[expr $mq_cond?\" \":\"\"]"
  575.      set mq_idx2_last $mq_idx2_counter
  576.      if {[string length $mq_txt_out]>$tmqb(size_ayah)} {break}
  577.    }
  578.      set mq_reptxt_bn1 "$tmqb(c,$mq_emp1) $tmqb(ban1,$mq_trans_requ). Surah:$mq_idx1.[lindex $tmqb(surah_name) $mq_idx1]. $tmqb(c,$mq_emp2)"
  579.      set mq_reptxt_bn2 "$tmqb(c,$mq_emp1) $tmqb(ban2,$mq_trans_requ). $tmqb(c,0s)V$tmqb(version) $tmqb(c,$mq_emp2)"
  580.  }
  581.  
  582.  if {$mq_caps} {set mq_txt_out [string toupper $mq_txt_out]}
  583.  
  584.  
  585.  switch -glob $mq_opt {
  586.    *\%* {
  587.      set mq_cond_tmp "$mq_idx1:"
  588.      foreach mq_t_cond [RT_format $mq_txt_out 300] {
  589.        lappend mq_reptxt "$mq_cond_tmp$mq_t_cond"
  590.        set mq_cond_tmp ""
  591.      }
  592.      set mq_reptxt [lreplace $mq_reptxt end end [lindex $mq_reptxt end]]
  593.    }
  594.    *\=* {
  595.      set mq_cond_tmp "$tmqb(c,$mq_emp1) Quran:$mq_idx1.[lindex $tmqb(surah_name) $mq_idx1]:$tmqb(c,$mq_emp2)$tmqb(c,$mq_emp3)"
  596.      foreach mq_t_cond [RT_format $mq_txt_out 400] {
  597.        lappend mq_reptxt "$mq_cond_tmp $mq_t_cond $tmqb(c,$mq_emp4)"
  598.        set mq_cond_tmp "$tmqb(c,$mq_emp3)"
  599.      }
  600.      set mq_reptxt [lreplace $mq_reptxt end end "[lindex $mq_reptxt end]$tmqb(c,$mq_emp1) [string toupper $mq_trans_requ] $tmqb(c,0s)V$tmqb(version) $tmqb(c,$mq_emp2)"]
  601.    }
  602.    *\^* {
  603.      set mq_size 50
  604.      set mq_dec1 " | | "
  605.      set mq_dec2 " |\\\\| "
  606.      set mq_deco 0
  607.      set mq_deco_h "The Holy Quran - [string toupper $mq_trans_requ]"
  608.      set mq_head_l [string length $mq_deco_h]
  609.      set mq_head_1 [expr (($mq_size-$mq_head_l)/2)]
  610.      set mq_head_2 [expr ($mq_size-$mq_head_l)-$mq_head_1]
  611.  
  612.      set mq_deco_f "Surah:$mq_idx1\-[lindex $tmqb(surah_name) $mq_idx1]"
  613.      set mq_foot_l [string length $mq_deco_f]
  614.      set mq_foot_1 [expr (($mq_size-$mq_foot_l)/2)]
  615.      set mq_foot_2 [expr ($mq_size-$mq_foot_l)-$mq_foot_1]
  616.  
  617.      lappend mq_reptxt "$tmqb(c,2s) $tmqb(c,Rs) _!_                                                      _!_ "
  618.      lappend mq_reptxt "$tmqb(c,2s)$tmqb(c,Re)(___)_[string repeat "_" $mq_head_1]$mq_deco_h[string repeat "_" $mq_head_2]_(___)"
  619.      foreach mq_text_vrb $mq_txt_out {
  620.        foreach mq_formated_text [RT_format $mq_text_vrb $mq_size] {
  621.          lappend mq_reptxt "$tmqb(c,2s) $tmqb(c,Rs)[expr $mq_deco?"$mq_dec1":"$mq_dec2"]$tmqb(c,$mq_emp3) $mq_formated_text $tmqb(c,$mq_emp4)$tmqb(c,2s)[string repeat " " [expr $mq_size-[string length $mq_formated_text]]][expr $mq_deco?"$mq_dec1":"$mq_dec2"]"
  622.          set mq_deco [expr $mq_deco?0:1]          
  623.        }
  624.      }
  625.      lappend mq_reptxt "$tmqb(c,2s)$tmqb(c,Rs)(___)_[string repeat "_" $mq_foot_1]$mq_deco_f[string repeat "_" $mq_foot_2]_(___)"
  626.  
  627.    }
  628.    *\+* {
  629.      set mq_size 50
  630.      set mq_dec1 "06| 13\\\\ 06|"
  631.      set mq_dec2 "06|13\\\\ \\\\06|"
  632.      set mq_deco 0
  633.      set mq_deco_h "The Holy Quran - [string toupper $mq_trans_requ]"
  634.      set mq_head_l [string length $mq_deco_h]
  635.      set mq_head_1 [expr (($mq_size-$mq_head_l)/2)]
  636.      set mq_head_2 [expr ($mq_size-$mq_head_l)-$mq_head_1]
  637.  
  638.      set mq_deco_f "Surah:$mq_idx1\-[lindex $tmqb(surah_name) $mq_idx1]"
  639.      set mq_foot_l [string length $mq_deco_f]
  640.      set mq_foot_1 [expr (($mq_size-$mq_foot_l)/2)]
  641.      set mq_foot_2 [expr ($mq_size-$mq_foot_l)-$mq_foot_1]
  642.  
  643.      lappend mq_reptxt "06    !                                                          !   "
  644.      lappend mq_reptxt "06  (___) [string repeat " " $mq_head_1] $mq_deco_h [string repeat " " $mq_head_2] (___)"
  645.      lappend mq_reptxt "06 (_____)____________________________________________________(_____)"
  646.      foreach mq_text_vrb $mq_txt_out {
  647.        foreach mq_formated_text [RT_format $mq_text_vrb $mq_size] {
  648.          lappend mq_reptxt "  [expr $mq_deco?"$mq_dec1":"$mq_dec2"] $tmqb(c,$mq_emp3) $mq_formated_text $tmqb(c,$mq_emp4) [string repeat " " [expr $mq_size-[string length $mq_formated_text]]][expr $mq_deco?"$mq_dec1":"$mq_dec2"]"
  649.          set mq_deco [expr $mq_deco?0:1]          
  650.        }
  651.      }
  652.      lappend mq_reptxt " 06(     ) [string repeat " " $mq_foot_1]$mq_deco_f[string repeat " " $mq_foot_2] (     )"
  653.  
  654.    }
  655.    default {
  656.      lappend mq_reptxt $mq_reptxt_bn1
  657.      foreach mq_text_vrb $mq_txt_out {
  658.        foreach mq_formated_text [RT_format $mq_text_vrb $mq_size] {
  659.          lappend mq_reptxt "$tmqb(c,$mq_emp3) $mq_formated_text $tmqb(c,$mq_emp4)"
  660.        }
  661.      }
  662.      lappend mq_reptxt $mq_reptxt_bn2
  663.    }
  664.  }
  665.  
  666.  set tmqb(last,$who) [index2serial $mq_idx1 $mq_idx2_last $tmqb(ayah_max)]
  667. # eval "$tmqb(log) \"Fetch time for $mq_idx1\:$mq_idx2 [expr ([clock clicks -milliseconds]-$mq_s_time)/1000.000]\""
  668.  #return $mq_reptxt
  669.  return [RT_emph $mq_reptxt $tmqb(emph_wrds) $tmqb(c,us) $tmqb(c,ue)]
  670. }
  671.  
  672. #############################################################################
  673. #           Following codes are used to perform IRC Searches                #
  674. #############################################################################
  675.  
  676. proc mq_search {who mq_trans_requ mq_args} {
  677.  global tmqb
  678.  
  679.  foreach mq_trans $mq_trans_requ {
  680.    if {!$tmqb(valid,$mq_trans)} {
  681.      append mq_reptxt [list "$tmqb(c,1s) [string toupper $mq_trans] is disabled! Files are missing. $tmqb(c,1e)"]
  682.      set mq_trans_requ [lreplace $mq_trans_requ [lsearch $mq_trans_requ $mq_trans] [lsearch $mq_trans_requ $mq_trans]]
  683.    }
  684.  }
  685.  
  686.  set mq_search_start_time [format %.2f [clock clicks -milliseconds]]
  687.  set mq_search_lists [split $mq_args &]
  688.  set mq_rst_cnt 0
  689.  set mq_result_serial ""
  690.  set mq_search_list ""
  691.  set mq_serlisttxt ""
  692.  
  693.  if {$mq_search_lists==""} {
  694.    return [list " What shall I search for? Give me some clue. Syntax: Quran Search <clue> "]
  695.  }
  696.  
  697.  foreach mq_sts $mq_search_lists {set mq_search_list [RT_lappend $mq_search_list "[string trim $mq_sts] "]}
  698.  foreach mq_st $mq_search_list {append mq_serlisttxt "$tmqb(c,hl)$tmqb(c,us)[string trim $mq_st]$tmqb(c,ue) \& "}
  699.  
  700.  if {[llength $mq_trans_requ]>1} { set mq_banner "$tmqb(c,bs)[string toupper $mq_trans_requ]$tmqb(c,be) $tmqb(ban2,al)" } { set mq_banner $tmqb(ban2,$mq_trans_requ) }
  701.  
  702.  lappend mq_reptxt "$tmqb(c,1s) Searching for [string trimright $mq_serlisttxt "& "] $tmqb(c,1s)in Qur'an $mq_banner. $tmqb(c,1e)$tmqb(c,ue)"
  703.  
  704.  for {set mq_idx1 1} {$mq_idx1<=4} {incr mq_idx1} {
  705.    set mq_result_list ""
  706.    foreach mq_trans $mq_trans_requ {
  707.      set mq_result_list "$mq_result_list [RT_search_line $tmqb(root)/$mq_trans-$mq_idx1 $mq_search_list]"
  708.    }
  709.      foreach mq_rst $mq_result_list {lappend mq_result_serial [index2serial $mq_idx1 $mq_rst $tmqb(cnt_file)]}
  710.  }
  711.  
  712.  set mq_result_serial [lsort -integer -unique $mq_result_serial]
  713.  set mq_rst_cnt [llength $mq_result_serial]
  714.  set mq_search_ttime [expr ([format %.2f [clock clicks -milliseconds]]-$mq_search_start_time)/1000]
  715.  set tmqb(ser,$who:rslt) $mq_result_serial
  716.  set tmqb(ser,$who:tran) $mq_trans_requ
  717.  set tmqb(ser,$who:word) $mq_search_list
  718.  set tmqb(ser,$who:cnts) $mq_rst_cnt
  719.  
  720.  switch -glob $mq_rst_cnt {
  721.    0 {
  722.      lappend mq_reptxt " No match found. Try again. $tmqb(c,Rs)$mq_rst_cnt$tmqb(c,Re) Matches in $tmqb(c,Gs)$mq_search_ttime sec$tmqb(c,Ge). $tmqb(c,0s)V$tmqb(version)"
  723.    }
  724.    [1-3] {
  725.      lappend mq_reptxt " Showing below following matches: [serial2result $mq_result_serial] - $tmqb(c,Rs)$mq_rst_cnt$tmqb(c,Re) Matches in $tmqb(c,Gs)$mq_search_ttime sec$tmqb(c,Ge). $tmqb(c,0s)V$tmqb(version) "
  726.      foreach mq_rst [tmqb_main $who show] { lappend mq_reptxt $mq_rst }
  727.    }
  728.    [4-9] - [1-4]? {
  729.      lappend mq_reptxt " Matches are: [serial2result $mq_result_serial] - $tmqb(c,Rs)$mq_rst_cnt$tmqb(c,Re) Matches in $tmqb(c,Gs)$mq_search_ttime sec$tmqb(c,Ge). $tmqb(c,0s)V$tmqb(version)"
  730.      lappend mq_reptxt "$tmqb(c,1s) To see results type $tmqb(c,us)Quran Show$tmqb(c,ue), repeat for more. $tmqb(c,1e)"
  731.    }  
  732.    default {
  733.      lappend mq_reptxt " Result too long. Narrow your search and try. $tmqb(c,Rs)$mq_rst_cnt$tmqb(c,Re) Matches in $tmqb(c,Gs)$mq_search_ttime sec$tmqb(c,Ge). $tmqb(c,0s)V$tmqb(version)"
  734.    }
  735.  }
  736.  return $mq_reptxt
  737. }
  738.  
  739. proc serial2result { serial } {
  740.  global tmqb
  741.  set mq_idx1_last 0
  742.  foreach mq_rst $serial {
  743.    set mq_idx  [serial2index $mq_rst $tmqb(ayah_max)]
  744.    set mq_idx1 [lindex $mq_idx 0]
  745.    set mq_idx2 [lindex $mq_idx 1]
  746.    if {$mq_idx1_last == $mq_idx1} {
  747.      append mq_result_temp ",$tmqb(c,Ls)$mq_idx2$tmqb(c,Le)"
  748.    } {
  749.      append mq_result_temp " $tmqb(c,Bs)$mq_idx1$tmqb(c,Be):$tmqb(c,Ls)$mq_idx2$tmqb(c,Le)"
  750.    }
  751.    set mq_idx1_last $mq_idx1
  752.  }
  753.  return $mq_result_temp
  754. }
  755.  
  756. #############################################################################
  757. #                    Here goes all bindings for gaim.                       #
  758. #############################################################################
  759.  
  760. if {[info exists gaim::version]} {
  761.  gaim::signal connect [gaim::conversation handle] received-im-msg { account who what flags abc } {
  762.    global tmqb RT_Kit
  763.    set args [string tolower [strip_html $what]]
  764.    if {[lindex $args 0]=="quran" || [lindex $args 0]=="!quran" } { set arg [lrange $args 1 end] } { return 1 }
  765.    
  766.    tmqb_cs_yahoo
  767.    if {![info exist RT_Kit(buffer,$account,$who)]} { after 100 "RT_Queue_GAIM $account $who" }
  768.  
  769.    foreach mq_line [tmqb_main $who@[gaim::account protocol $account] $arg] {
  770.      lappend RT_Kit(buffer,$account,$who) $mq_line
  771.    }
  772.    catch { unset arg }
  773.    return 0
  774.  }
  775.  
  776.  gaim::signal connect [gaim::conversation handle] sending-im-msg { account who what } {
  777.    global tmqb RT_Kit
  778.    eval "$tmqb(log) \"account who what == $account $who $what \""
  779.  
  780.     set args [string tolower [strip_html $what]]
  781.     if {[lindex $args 0]=="quran" || [lindex $args 0]=="!quran" } { set arg [lrange $args 1 end] } { return 1 }
  782.  
  783.     tmqb_cs_yahoo  
  784.     if {![info exist RT_Kit(buffer,$account,$who)]} { after 100 "RT_Queue_GAIM $account $who" }
  785.     foreach mq_line [tmqb_main $who@[gaim::account protocol $account] $arg] {
  786.       lappend RT_Kit(buffer,$account,$who) $mq_line
  787.     }
  788.     catch { unset arg }
  789.     return 0
  790.   }
  791.  
  792.  
  793. }
  794.  
  795. #############################################################################
  796. #                 Here goes all bindings for Eggdrops.                      #
  797. #############################################################################
  798.  
  799. if {[info exists version]} {
  800.   proc mq_msg {nick uhost hand args} {
  801.     global tmqb RT_Kit
  802.     tmqb_cs_irc
  803.  
  804.     if {![info exist RT_Kit(buffer,$nick)]} { after 100 "RT_Queue_IRC $nick" }
  805.     foreach mq_line [tmqb_main $nick [lindex $args 0]] {
  806.       lappend RT_Kit(buffer,$nick) $mq_line
  807.     }
  808.     return 1
  809.   }
  810.  
  811.   proc mq_pub {nick uhost hand chan args} {
  812.     global tmqb RT_Kit
  813.     tmqb_cs_irc
  814.  
  815.     if {![info exist RT_Kit(buffer,$chan)]} { after 100 "RT_Queue_IRC $chan" }
  816.     foreach mq_line [tmqb_main $chan [lindex $args 0]] {
  817.       lappend RT_Kit(buffer,$chan) $mq_line
  818.     }
  819.     return 1
  820.   }
  821.  
  822.   proc mq_DCC {hand idx args} {
  823.     global tmqb
  824.     tmqb_cs_irc
  825.     foreach mq_line [tmqb_main $hand [lindex $args 0]] {putdcc $idx "$mq_line"}
  826.     return 1
  827.   }
  828.  
  829.   proc mq_chat {nick chan args} {
  830.     global tmqb
  831.     tmqb_cs_irc
  832.     foreach mq_line [tmqb_main $nick [lrange [lindex $args 0] 1 end]] {dccputchan $chan "$mq_line"}
  833.     return 1
  834.   }
  835.  
  836.   bind msg - Quran mq_msg; bind msg - !Quran mq_msg; bind msg - .Quran mq_msg
  837.   bind pub - Quran mq_pub; bind pub - !Quran mq_pub; bind pub - .Quran mq_pub
  838.   bind dcc - Quran mq_DCC;
  839.   bind chat - Quran* mq_chat; bind chat - !Quran* mq_chat
  840. }
  841.  
  842. eval "$tmqb(log) \"Alhamdolillah! Load Success.......The Mighty Quran BOT $tmqb(version)\""
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement