<?xml version="1.0" encoding="UTF-8"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en-gb">
	<link rel="self" type="application/atom+xml" href="https://forum.eggheads.org/app.php/feed/topic/21097" />

	<title>egghelp/eggheads community</title>
	<subtitle>Discussion of eggdrop bots, shell accounts and tcl scripts.</subtitle>
	<link href="https://forum.eggheads.org/index.php" />
	<updated>2022-01-14T08:14:20-04:00</updated>

	<author><name><![CDATA[egghelp/eggheads community]]></name></author>
	<id>https://forum.eggheads.org/app.php/feed/topic/21097</id>

		<entry>
		<author><name><![CDATA[flink]]></name></author>
		<updated>2022-01-14T08:14:20-04:00</updated>

		<published>2022-01-14T08:14:20-04:00</published>
		<id>https://forum.eggheads.org/viewtopic.php?p=110784#p110784</id>
		<link href="https://forum.eggheads.org/viewtopic.php?p=110784#p110784"/>
		<title type="html"><![CDATA[help for user commands to accept them without flag]]></title>

		
		<content type="html" xml:base="https://forum.eggheads.org/viewtopic.php?p=110784#p110784"><![CDATA[
good again, this part is for users to use the commands and I have put it in the following ways and they do not work:<div class="codebox"><p>Code: </p><pre><code>## #Flags for using RSS feeds commands added ( -|- for everyone ) set rss(rss_show_flags) "-|-"  "*|*"  "*" "-" </code></pre></div>I have not touched this other one since it is to add a RSS that is the part that only I use or I am wrong and it is for users too <div class="codebox"><p>Code: </p><pre><code>##  #Flags needed to add/list/remove RSS feeds  set rss(rss_add_flags) "nm|MN" </code></pre></div><p>Statistics: Posted by <a href="https://forum.eggheads.org/memberlist.php?mode=viewprofile&amp;u=12899">flink</a> — Fri Jan 14, 2022 8:14 am</p><hr />
]]></content>
	</entry>
		<entry>
		<author><name><![CDATA[SpiKe^^]]></name></author>
		<updated>2022-01-14T00:39:44-04:00</updated>

		<published>2022-01-14T00:39:44-04:00</published>
		<id>https://forum.eggheads.org/viewtopic.php?p=110783#p110783</id>
		<link href="https://forum.eggheads.org/viewtopic.php?p=110783#p110783"/>
		<title type="html"><![CDATA[help for user commands to accept them without flag]]></title>

		
		<content type="html" xml:base="https://forum.eggheads.org/viewtopic.php?p=110783#p110783"><![CDATA[
Now I have no idea what you are talking about.<br>Maybe the script is just not working now?<p>Statistics: Posted by <a href="https://forum.eggheads.org/memberlist.php?mode=viewprofile&amp;u=7749">SpiKe^^</a> — Fri Jan 14, 2022 12:39 am</p><hr />
]]></content>
	</entry>
		<entry>
		<author><name><![CDATA[flink]]></name></author>
		<updated>2022-01-13T16:25:22-04:00</updated>

		<published>2022-01-13T16:25:22-04:00</published>
		<id>https://forum.eggheads.org/viewtopic.php?p=110782#p110782</id>
		<link href="https://forum.eggheads.org/viewtopic.php?p=110782#p110782"/>
		<title type="html"><![CDATA[help for user commands to accept them without flag]]></title>

		
		<content type="html" xml:base="https://forum.eggheads.org/viewtopic.php?p=110782#p110782"><![CDATA[
thanks SpiKe ^^ for answering, I did it in the part of the user commands and it doesn't work for me because of all these "- | -" "* | *" "-" and it doesn't work. because if I put them both, anyone could enter data I think and it is not what I want<p>Statistics: Posted by <a href="https://forum.eggheads.org/memberlist.php?mode=viewprofile&amp;u=12899">flink</a> — Thu Jan 13, 2022 4:25 pm</p><hr />
]]></content>
	</entry>
		<entry>
		<author><name><![CDATA[SpiKe^^]]></name></author>
		<updated>2022-01-13T11:44:59-04:00</updated>

		<published>2022-01-13T11:44:59-04:00</published>
		<id>https://forum.eggheads.org/viewtopic.php?p=110780#p110780</id>
		<link href="https://forum.eggheads.org/viewtopic.php?p=110780#p110780"/>
		<title type="html"><![CDATA[help for user commands to accept them without flag]]></title>

		
		<content type="html" xml:base="https://forum.eggheads.org/viewtopic.php?p=110780#p110780"><![CDATA[
The script seems to provide two settings that deal with permission flags...<div class="codebox"><p>Code: </p><pre><code>##  #Flags for using RSS feeds commands added ( -|- for everyone )  set rss(rss_show_flags) "nm|o"  ##  #Flags needed to add/list/remove RSS feeds  set rss(rss_add_flags) "nm|MN" </code></pre></div>Try setting one or both of them to "( -|- for everyone )"<p>Statistics: Posted by <a href="https://forum.eggheads.org/memberlist.php?mode=viewprofile&amp;u=7749">SpiKe^^</a> — Thu Jan 13, 2022 11:44 am</p><hr />
]]></content>
	</entry>
		<entry>
		<author><name><![CDATA[flink]]></name></author>
		<updated>2022-01-13T11:02:10-04:00</updated>

		<published>2022-01-13T11:02:10-04:00</published>
		<id>https://forum.eggheads.org/viewtopic.php?p=110779#p110779</id>
		<link href="https://forum.eggheads.org/viewtopic.php?p=110779#p110779"/>
		<title type="html"><![CDATA[help for user commands to accept them without flag]]></title>

		
		<content type="html" xml:base="https://forum.eggheads.org/viewtopic.php?p=110779#p110779"><![CDATA[
Hello good, I got this code and I have been with it for days and I would like the user commands to accept them without having a flag, thank you very much<br>Code: <div class="codebox"><p>Code: </p><pre><code> ############################################################################################ BlackRSS 1.0  (04/05/2020)                                               ####                                                                                 ####                                 Copyright 2008 - 2020 @ http://sabo.free.bg/tcls/       ####                _   _   _   _   _   _   _   _   _   _   _   _   _   _                ####           / \ / \ / \ / \ / \ / \ / \ / \ / \ / \ / \ / \ / \ / \                ####              ( T | C | L | S | C | R | I | P | T | S | . | N | E | T )             ####           \_/ \_/ \_/ \_/ \_/ \_/ \_/ \_/ \_/ \_/ \_/ \_/ \_/ \_/               ####                                                                                 ####                          ® Krasi Production ®                                     ####                                                                                  ####                                   PRESENTS                                       ####                                   ® ######################################   BlackRSS TCL   ######################################                                       ####  DESCRIPTION:                                  ####  Gets news from RSS sites added via IRC. Now featuring a preferential setting      ####  that let's the user define his keywords to get only the news that contains them.       ####  Every chan can have its own list of RSS feeds to check.               ####                                          ####  Tested on Eggdrop v1.8.4 (Debian Linux) Tcl version: 8.6.6                      ####                                       ##############################################################################################                                            ####  INSTALLATION:                                       ####  ++ http, tdom &amp; tls packages are REQUIRED for this script to work.              ####  ++ Edit BlackRSS.tcl script &amp; place it into your /scripts directory.         ####  ++ add "source scripts/BlackRSS.tcl" to your eggdrop.conf &amp; rehash.           ####                                            ####                                    ##############################################################################################                                    ####Commands for RSS                              ####                                    #### !rss - shows the ID's and the commands for the RSS added               ####                                    #### !rss add &lt;rss cmd&gt; &lt;link&gt; &lt;name&gt; [num=X time=X enc=X word=X,Y,Z]            ####                                    #### Options (if not specified the standard values are set bellow):            #### num=X -&gt; define the number of new rss news to get ; ex: num=5            ####                                    #### time=X -&gt; define the time in minutes for the bot to check for new news ; ex: time=3     ####                                    #### enc=X -&gt; define the 'encoding' if the news aren't looking so great (like utf-8)      ####                                    #### word=X,Y,Z -&gt; define keywords for the rss news (only the news that contain one of       ####               the words specified in the title or desc will be shown)         ####       ex: word=coronavirus,pandemic,covid                  ####                                    ####--- You can specify one, all or none of the options shown               ####                                    #### !rss list -&gt; lists each RSS news added with their details (id,cmd,link, etc.)      ####                                    ##   ## !rss del &lt;id&gt; (removes an added RSS, the ID can be taken from !rss list or !rss)        ####                                    ##   ## !rss check &lt;link&gt; (checks a RSS link)                     ####                                    #### !rss help - shows the help :P                        ##   ##                                    ####                                    ##                        ############################################################################################                                    ####        OFFICIAL LINKS:                                                            ####         E-mail      : kcdenkov@gmail.com                                           ####         Bugs report : http://http://sabo.free.bg/tcls/                            ####         GitHub page : http://freeunibg.eu/                         ####         Online help : irc.sabo.bg                                                  ####                       #irc.sabo.bg / FreeUniBG                                      ####              You can ask in english or romanian                                ####                                      ####        paypal Krasi@FreeUniBG                                                        ####                                      #############################################################################################                                      ####             You want a customised TCL Script for your eggdrop?                        ####                   Easy-peasy, just tell me what you need!                          ####     I can create almost anything in TCL based on your ideas and donations.        ####         Email blackshadow@tclscripts.net or info@tclscripts.net with your          ####          request informations and I'll contact you as soon as possible.              ####                                     #############################################################################################                                               ####        PERSONAL AND NON-COMMERCIAL USE LIMITATION.                               ####                                                                                 ####        This program is provided on an "as is" and "as available" basis,                 ####        with ABSOLUTELY NO WARRANTY. Use it at your own risk.                        ####                                                                                 ####       Use this code for personal and NON-COMMERCIAL purposes ONLY.                 ####                                                                                 ####        Unless otherwise specified, YOU SHALL NOT copy, reproduce, sublicense,          ####        distribute, disclose, create derivatives, in any way ANY PART OF              ####        THIS CONTENT, nor sell or offer it for sale.                                  ####                                                                                  ####        You will NOT take and/or use any screenshots of this source code for            ####        any purpose without the express written consent or knowledge of author.         ####                                                                                ####       You may NOT alter or remove any trademark, copyright or other notice            ####        from this source code.                                                          ####                                                                                  ####                    Copyright 2008 - 2020 @ http://sabo.free.bg/tcls/           ####                                                                                  ##############################################################################################Set RSS output line#  %rssname% - name of the RSS#  %title% - news title#  %link% - news link#  %date% - news date [some rss feeds dont have date]##set rss(rss_output) "\[\002%rssname%\002\] \002Title\002: %title% --- \002Link\002: %link% --- \002Update\002: %date%"###Default char for RSS commandset rss(rss_char) "!"###Flags for using RSS feeds commands added ( -|- for everyone )set rss(rss_show_flags) "nm|o"###Flags needed to add/list/remove RSS feedsset rss(rss_add_flags) "nm|MN"###Set default time to check for now RSS (minutes)set rss(default_check_time) "5"###Set default number of new RSS news to getset rss(news_number) "3"###Use is.gd to shrink links ? (1 - yes ; 0 - no )set rss(tiny_link) "1"########################################################################################package require tlspackage require httppackage require tdombind pub - $rss(rss_char)rss rss:cmdbind pubm - * rss:cmd:actsetudef flag rssset rss(directory) "scripts/RSS"set rss(filelist) "$rss(directory)/rss_list.txt"if {![file isdirectory $rss(directory)]} {   file mkdir $rss(directory)}if {![file exists $rss(filelist)]} {   set file [open $rss(filelist) w]   close $file}if {![info exists rss(timer_start)]} {   timer 1 rss:timer   set rss(timer_start) 1}###proc rss:cmd:act {nick host hand chan arg} {   global rssif {![channel get $chan rss]} {   return}if {[matchattr $hand $rss(rss_show_flags) $chan]} {if {[info exists rss(cmd_show:$chan)]} {   putserv "NOTICE $nick :Let me finish showing the RSS news requested."   return}if {![info exists rss(rss_list)]} {   set get_list [rss:get_list]   set rss(rss_list) $get_list}   set read_id ""   set read_chan ""   set read_link ""   set read_time ""   set read_num ""   set read_enc ""   set read_name ""   set rss_word ""   set news ""   set noinfo 0   set word_pattern ""   set counter 0   set cmd [lindex [split $arg] 0]   set data [split $rss(rss_list) "\n"]   set search [lsearch -nocase $rss(rss_list) $cmd]if {$search &gt; -1} {   foreach line $data {   set read_cmd [lindex [split $line] 2]   set read_chan [lindex [split $line] 1]if {[string equal -nocase $cmd $read_cmd] &amp;&amp; [string equal -nocase $read_chan $chan]} {   set read_id [lindex [split $line] 0]   set read_link [lindex [split $line] 3]   set read_num [lindex [split $line] 5]   set read_enc [lindex [split $line] 6]   set read_name [lrange [split $line] 7 end]   set split_name [rss:wsplit $read_name "%word%"]   set rss_word [lindex $split_name 1]   set read_name [concat [lindex $split_name 0]]   break   }}   set current_data [rss:data $read_link 0]if {[llength [split $current_data]] &lt;= 2} {   if {$current_data != "ok" || $current_data == "2" || $current_data == "0" || $current_data == "3"} {   set noinfo 1   }}if {$noinfo == 1} {   putserv "NOTICE $nick :No news for \002$read_name\002"   return}   set items [rss:items $current_data]if {$items == ""} {   putserv "NOTICE $nick :No news for \002$read_name\002"   return}   set split_word [rss:wsplit $rss_word ","]   foreach w $split_word {if {$w != ""} {   lappend word_pattern $w   }}   set word_pattern [join $word_pattern "|"]if {$rss_word == ""} {foreach item $items {   lappend news $item   incr counterif {$counter == $read_num} {   break            }         }   } else {foreach item $items {   set read_title [lindex $item 0]   set read_desc [lindex $item 1]if {[regexp -nocase $word_pattern $read_title] || [regexp -nocase $word_pattern $read_desc]} {   lappend news $item   incr counterif {$counter == $read_num} {   break                  }               }            }            }               } else { return }      if {$news != ""} {   set rss(cmd_show:$chan) 1   rss:cmd:act_now $chan $news $read_name $read_enc 0      } else {   putserv "NOTICE $nick :No news for \002$read_name\002"         }   }}###proc rss:cmd:act_now {chan data rssname enc num} {   global rss   set line [lindex $data $num]   set eth [rss:special_text "Ð"]if {$enc != "-"} {   set title [encoding convertfrom $enc [rss:special_text [lindex $line 0]]]   set desc [encoding convertfrom $enc [rss:special_text [lindex $line 1]]]} else {   set title [rss:special_text [lindex $line 0]]   set desc [rss:special_text [lindex $line 1]]if {[regexp $eth $title]} {   set title [encoding convertfrom "utf-8" [rss:special_text [lindex $line 0]]]}if {[regexp $eth $desc]} {   set desc [encoding convertfrom "utf-8" [rss:special_text [lindex $line 1]]]   }}if {$rss(tiny_link) == "1"} {   set link [b0:short [lindex $line 2]]} else {   set link [lindex $line 2]}   set pubdate [lindex $line 3]      set replace(%rssname%) $rssname   set replace(%title%) $title   set replace(%link%) $link   set replace(%date%) $pubdate   set reply [string map [array get replace] $rss(rss_output)]   puthelp "PRIVMSG $chan :$reply"   set inc [expr $num + 1]if {[lindex $data $inc] != ""} {   utimer 1 [list rss:cmd:act_now $chan $data $rssname $enc $inc]   } else {   unset rss(cmd_show:$chan)   }}###proc rss:timer {} {   global rss   set check_time_now ""if {![info exists rss(rss_list)]} {   set get_list [rss:get_list]if {$get_list == ""} {   timer 1 rss:timer   return   } else {   set rss(rss_list) $get_list   }}   set data [split $rss(rss_list) "\n"]foreach line $data {   set id [lindex $line 0]   set check_time [lindex $line 4]if {![info exists rss(check:$id:time)]} {   set rss(check:$id:time) 0      }   incr rss(check:$id:time)if {$rss(check:$id:time) == $check_time} {   lappend check_time_now $line   unset rss(check:$id:time)      } elseif {$rss(check:$id:time) &gt; $check_time} {   unset rss(check:$id:time)      }   }if {$check_time_now != ""} {   rss:timer:check $check_time_now 0   } else {   timer 1 rss:timer   }}###proc rss:timer:check {data num} {   global rss botnick   set line [lindex $data $num]   set id [lindex $line 0]   set filename "$rss(directory)/$id"   set chan [lindex $line 1]   set url [lindex $line 3]   set rss_num [lindex $line 5]   set rss_enc [lindex $line 6]   set rss_name [lrange $line 7 end]   set split_name [rss:wsplit $rss_name "%word%"]   set rss_word [lindex $split_name 1]   set rss_name [concat [lindex $split_name 0]]   set skip 0   set new_news ""   set old_news ""   set word_pattern ""   set news_counter 0   set split_word [rss:wsplit $rss_word ","]   set eth [rss:special_text "Ð"]foreach w $split_word {if {$w != ""} {   lappend word_pattern $w   }}   set word_pattern [join $word_pattern "|"]   set current_data [rss:data $url 0]if {[llength [split $current_data]] &lt;= 2} {   if {$current_data != "ok" || $current_data == "2" || $current_data == "0" || $current_data == "3"} {   set skip 1   }}if {$skip == 1} {   set inc [expr $num + 1]if {[lindex $data $inc] != ""} {   utimer 5 [list rss:timer:check $data $inc]   return      } else {   timer 1 rss:timer   return         }   }   set items [rss:items $current_data]if {$items == ""} {      set inc [expr $num + 1]if {[lindex $data $inc] != ""} {   utimer 5 [list rss:timer:check $data $inc]   return      } else {   timer 1 rss:timer   return      }   return}   if {![file exists $filename]} {   set file [open $filename w]   close $file}   set file [open $filename r]   set read [read -nonewline $file]   close $file   set split_read [split $read "\n"]if {$rss_word != ""} {foreach item $items {   set read_title [lindex $item 0]   set read_desc [lindex $item 1]if {[regexp -nocase $word_pattern $read_title] || [regexp -nocase $word_pattern $read_desc]} {   incr news_counter   set link [lindex $item 2]if {[lsearch -nocase $read $link] &lt; 0} {   lappend new_news $item   } else {   lappend old_news $item      }}if {$news_counter == $rss_num} {   break      }   }} else {foreach item $items {   incr news_counter   set link [lindex $item 2]if {[lsearch -nocase $read $link] &lt; 0} {   lappend new_news $item      } else {   lappend old_news $item   }if {$news_counter == $rss_num} {   break      }   }}if {$new_news != ""} {   set file [open $filename w]foreach line $new_news {if {$rss_enc != "-"} {   set title [encoding convertfrom $rss_enc [rss:special_text [lindex $line 0]]]   set desc [encoding convertfrom $rss_enc [rss:special_text [lindex $line 1]]]} else {   set title [rss:special_text [lindex $line 0]]   set desc [rss:special_text [lindex $line 1]]if {[regexp $eth $title]} {   set title [encoding convertfrom "utf-8" [rss:special_text [lindex $line 0]]]   }if {[regexp $eth $desc]} {   set desc [encoding convertfrom "utf-8" [rss:special_text [lindex $line 1]]]   }   }if {$rss(tiny_link) == "1"} {   set link [b0:short [lindex $line 2]]} else {   set link [lindex $line 2]}   set pubdate [lindex $line 3]if {[onchan $botnick $chan]} {   set replace(%rssname%) $rss_name   set replace(%title%) $title   set replace(%link%) $link   set replace(%date%) $pubdate   set reply [string map [array get replace] $rss(rss_output)]   puthelp "PRIVMSG $chan :$reply"         }   puts $file [lindex $line 2]      }   close $fileif {[llength $new_news] &lt; $rss_num} {   set dif [expr [llength $new_news] - $rss_num]if {$old_news != ""} {   set cc 0   set file [open $filename a]foreach line $old_news {   incr cc   set link [lindex $line 2]   puts $file [lindex $line 2]if {$cc == $dif} { break }         }            close $file      }   }}   set inc [expr $num + 1]if {[lindex $data $inc] != ""} {   utimer 5 [list rss:timer:check $data $inc]   return      } else {   timer 1 rss:timer   return      }}###proc rss:special_text {string} {    set map {}   set string [string map {";" ""} $string]    foreach {entity number} [regexp -all -inline {&amp;#(\d+)} $string] {        lappend map $entity [format \\u%04x [scan $number %d]]    }    set string [string map [subst -nocomm -novar $map] $string]   return $string}###proc rss:filter {data} {   global rss   set text [string map {      "&amp;" "&amp;"   "&amp;apos;" "'"   "&gt;" "&gt;"   "&lt;" "&lt;"   " " ""       } $data]   return $text}###proc rss:items {data} {   global rss   set check_date [rss:check_date $data]   set check_dom [catch {set doc [dom parse $data]} error]if {$check_dom == 1} {   return ""}   set root [$doc documentElement]   set items ""   set pattern {&lt;.*?&gt;}   set nodeList [$root selectNodes /rss/channel/item]foreach node $nodeList {   set title [[$node selectNodes "title"] text]if {[$node selectNodes "description"] != ""} {   set description [[$node selectNodes "description"] text]} else {   set description "-"}   set link [[$node selectNodes "link"] text]switch $check_date {   1 {   set pubdate [[$node selectNodes "pubDate"] text]   }   2 {   set pubdate [[$node selectNodes "dc:date"] text]   }   0 {   set pubdate "-"   }}     regsub -all $pattern $description "" description     regsub -all $pattern $title "" title     set description [join [rss:filter [split $description]]]     set title [join [rss:filter [split $title]]]     lappend items [list $title $description $link $pubdate]   }   return $items}###proc rss:check_date {data} {   global rss   set find_date [regexp {&lt;pubDate&gt;(.*)&lt;/pubDate&gt;} $data]if {$find_date == 0} {   set find_date [regexp {&lt;dc:date&gt;(.*)&lt;/dc:date&gt;} $data]} else {   return 1}if {$find_date == 0} {   return 0   } else {   return 2   }}###proc rss:data {url type} {   global rss   http::register https 443 [list ::tls::socket -autoservername true]   set ipq [http::config -useragent "lynx"]   set check_http [catch {set ipq [::http::geturl $url -timeout 10000]}]if {$check_http == "1"} {   return 2}   set status [::http::status $ipq]if {$status != "ok"} {   ::http::cleanup $ipq   return $status   }   set data [http::data $ipq]   ::http::cleanup $ipqif {$type == "0"} {   return $data} else {   set check_xml [rss:items $data]if {$check_xml == "0"} {      return 3      }   return 1   }}###proc rss:entry_exists {link name cmd chan} {   global rss   set file [open $rss(filelist) r]   set read [read -nonewline $file]   close $fileif {$read == ""} {   return 0   }   set data [split $read "\n"]foreach line $data {   set read_channel [lindex [split $line] 1]   set read_cmd [lindex [split $line] 2]   set read_link [lindex [split $line] 3]   set read_name [lindex [split $line] 4]if {[string equal -nocase $read_channel $chan]} {if {[string equal -nocase $read_cmd $cmd]} {   return 1} elseif {[string equal -nocase $read_link $link]} {      return 2} elseif {[string equal -nocase $read_name $name]} {      return 3               }      }   return 0   }}###proc rss:lastid {chan} {   global rss   set file [open $rss(filelist) r]   set size [file size $rss(filelist)]   set data [split [read $file $size] \n]   close $file   set list [lsearch -all -inline -nocase $data "* $chan * * *"]if {$list != ""} {   set sort [lsort -integer -decreasing -index 0 $list]   return [lindex [lindex $sort 0] 0]   } else {   return 0   }}###proc rss:link_byid {id chan} {   global rss   set file [open $rss(filelist) r]   set read [read -nonewline $file]   close $file   set link ""   set data [split $read "\n"]foreach line $data {   set read_id [lindex [split $line] 0]   set read_channel [lindex [split $line] 1]if {[string equal -nocase $chan $read_channel] &amp;&amp; [string equal -nocase $id $read_id]} {   set link [lindex [split $line] 3]   break      }   }   return $link}###proc rss:valid_id {id chan} {   global rss   set file [open $rss(filelist) r]   set size [file size $rss(filelist)]   set data [split [read $file $size] \n]   close $file   set list [lsearch -all -inline -nocase $data "$id $chan * * *"]if {$list != ""} {   return 1   } else {   return 0   }}###proc rss:get_list {} {   global rss   set file [open $rss(filelist) r]   set read [read -nonewline $file]   close $file   return $read}proc rss:list {nick chan} {   global rss   set found 0   set file [open $rss(filelist) r]   set read [read -nonewline $file]   close $fileif {$read == ""} {   return 0}   set data [split $read "\n"]foreach line $data {   set read_channel [lindex [split $line] 1]if {[string equal -nocase $chan $read_channel]} {   set found 1   set read_id [lindex [split $line] 0]   set link [lindex [split $line] 3]   set rss_time [lindex [split $line] 4]   set rss_num [lindex [split $line] 5]   set rss_enc [lindex [split $line] 6]   set cmd [lindex [split $line] 2]   set name [lrange [split $line] 7 end]   set split_name [rss:wsplit $name "%word%"]if {[lindex $split_name 1] != ""} {   putserv "PRIVMSG $chan :\002ID\002: $read_id ; \002Cmd\002: $cmd ; \002Link\002: $link ; \002Name\002: [lindex $split_name 0] ; \002Check_Time\002:$rss_time ; \002News_number\002:$rss_num ; \002Encoding\002:$rss_enc ; \002KeyWord\002:[lindex $split_name 1]"} else {   putserv "PRIVMSG $chan :\002ID\002: $read_id ; \002Cmd\002: $cmd ; \002Link\002: $link ; \002Name\002: [lindex $split_name 0] ; \002Check_Time\002:$rss_time ; \002News_number\002:$rss_num ; \002Encoding\002:$rss_enc"      }   }}if {$found == "0"} {   putserv "PRIVMSG $chan :No RSS in database for $chan"   } else {   putserv "PRIVMSG $chan :End of RSS list"   }}###proc rss:del {id chan} {   global rss   set found 0   set file [open $rss(filelist) r]   set read [read -nonewline $file]   close $fileif {$read == ""} {   return 0}   set valid_id [rss:valid_id $id $chan]if {$valid_id == "0"} {   return 0}   set timestamp [clock format [clock seconds] -format {%Y%m%d%H%M%S}]   set temp "$rss(filelist).new.$timestamp"   set tempwrite [open $temp w]   set data [split $read "\n"]foreach line $data {   set read_id [lindex [split $line] 0]   set read_channel [lindex [split $line] 1]if {[string equal -nocase $read_id $id] &amp;&amp; [string equal -nocase $chan $read_channel]} {   set found 1      continue      } else {   puts $tempwrite $line      }   }   close $tempwrite       file rename -force $temp $rss(filelist)   return $found}###proc rss:add {cmd url name chan} {   global rss   set rss_num ""   set rss_time ""   set rss_word ""   set rss_enc ""   set pos [lsearch $name "num=*"]if {$pos &gt; -1} {   set split_text [rss:wsplit [lindex $name $pos] "="]   set get_text [lindex $split_text 1]if {$get_text != ""} { set rss_num $get_text } else { set rss_num -1 }   set name [lreplace $name $pos $pos]}   set pos [lsearch $name "enc=*"]if {$pos &gt; -1} {   set split_text [rss:wsplit [lindex $name $pos] "="]   set get_text [lindex $split_text 1]if {$get_text != ""} { set rss_enc $get_text } else { set rss_enc -1 }   set name [lreplace $name $pos $pos]}   set pos [lsearch $name "time=*"]if {$pos &gt; -1} {   set split_text [rss:wsplit [lindex $name $pos] "="]   set get_text [lindex $split_text 1]if {$get_text != ""} { set rss_time $get_text } else { set rss_time -1 }   set name [lreplace $name $pos $pos]}   set pos [regexp {word=(.*)} $name -&gt; word]if {[info exists word]} {   set rss_word $word   regsub -all -nocase "word=$word" $name "" name}if {$rss_num == -1 || ($rss_num != "" &amp;&amp; ![regexp {[0-9]} $rss_num])} {   return [list 2 "Invalid number of RSS news specified"]}if {$rss_enc == -1 || ($rss_enc != "" &amp;&amp; [lsearch [encoding names] $rss_enc] &lt; 0)} {   return [list 2 "Invalid encoding specified"]}if {$rss_time == -1 || ($rss_time != "" &amp;&amp; ![regexp {[0-9]} $rss_time])} {   return [list 2 "Invalid rss check time specified"]}if {$rss_num == ""} { set rss_num $rss(default_check_time)}if {$rss_time == ""} { set rss_time $rss(news_number)}if {$rss_word != ""} { set name "$name%word%$rss_word" }if {$rss_enc == ""} { set rss_enc "-" }   set check_valid_url [rss:data $url 1]   switch $check_valid_url {   1 {   set check_exists [rss:entry_exists $url $name $cmd $chan]switch $check_exists {   0 {   set id [expr [rss:lastid $chan] + 1]   set file [open $rss(filelist) a]   puts $file "$id $chan $cmd $url $rss_time $rss_num $rss_enc $name"   close $file   set rss(rss_list) [rss:get_list]   return 1   }   1 {   return [list 2 "rss command already exists"]   }   2 {   return [list 2 "rss url already exists"]   }   3 {   return [list 2 "rss name already exists"]      }   }}   2 {   return [list 0 "couldn't open socket: Name or service not known"]   }   3 {   return [list 0 "no xml items found. Is that an xml page?!"]   }   default {   return [list 0 $check_valid_url]      }   }}###proc rss:cmd {nick host hand chan arg} {   global rss   set what [lindex [split $arg] 0]   set cmd [lindex [split $arg] 1]   set url [lindex [split $arg] 2]   set name [join [lrange [split $arg] 3 end]]   switch $what {   add {if {![matchattr $hand $rss(rss_add_flags) $chan]} {   return}if {[llength [split $arg]] &lt; 4} {   putserv "PRIVMSG $chan :Not enough data supplied. Use !rss help / ? for more help."   return}if {![regexp {^(https?|http):\/\/[^\s\/$.?#].[^\s]*$} $url]} {   putserv "PRIVMSG $chan :Invalid url supplied. Use !rss help / ? for more help."   return}   set add [rss:add $cmd $url $name $chan]   set status [lindex $add 0]   set status_reason [lindex $add 1]switch $status  {   0 {   putserv "PRIVMSG $chan :Error. Cannot access URL for checking. Reason: $status_reason"   }   1 {   putserv "PRIVMSG $chan :Added rss to database."   }   2 {   putserv "PRIVMSG $chan :Couldn't add rss. Reason: $status_reason"   }}   }   list {if {![matchattr $hand $rss(rss_add_flags) $chan]} {   return      }   rss:list $nick $chan   }   del {if {![matchattr $hand $rss(rss_add_flags) $chan]} {   return   }   if {![regexp {^[0-9]} $cmd]} {   putserv "PRIVMSG $chan :Couldn't execute. Reason: no valid ID specified"   return}   set status_del [rss:del $cmd $chan]if {$status_del == 0} {   putserv "PRIVMSG $chan :Couldn't delete ID $cmd. Reason: no id found"} else {   putserv "PRIVMSG $chan :Deleted ID $cmd from database."if {[file exists "scripts/RSS/$cmd"]} {   file delete "scripts/RSS/$cmd"         }if {[info exists rss(check:$cmd:time)]} {   unset rss(check:$cmd:time)}   set rss(rss_list) [rss:get_list]      }   }   check {if {![matchattr $hand $rss(rss_add_flags) $chan]} {   return   }if {![regexp {^[0-9]} $cmd]} {   putserv "PRIVMSG $chan :Couldn't execute. Reason: no valid ID specified"   return}      set valid_id [rss:valid_id $cmd $chan]if {$valid_id == "0"} {   putserv "PRIVMSG $chan :Couldn't check ID \002$cmd\002. Reason: no id found"   return   }   set url [rss:link_byid $cmd $chan]   set check_valid_url [rss:data $url 1]   switch $check_valid_url {   1 {   putserv "PRIVMSG $chan :RSS \002$cmd\002 check results : \002OK\002"   }   2 {   putserv "PRIVMSG $chan :RSS \002$cmd\002 check results : \002couldn't open socket: Name or service not known\002"   }   3 {   putserv "PRIVMSG $chan :RSS \002$cmd\002 check results : \002no xml items found. Is that an xml page?!\002"   }   default {   putserv "PRIVMSG $chan :RSS \002$cmd\002 check results : \002check_valid_url\002"      }   }}   help {if {![matchattr $hand $rss(rss_add_flags) $chan]} {   return}      putserv "NOTICE $nick :\002RSS\002 Help : \002!rss\002 - shows the ID's and the commands for the RSS added ; \002!rss add &lt;rss cmd&gt; &lt;link&gt; &lt;name&gt;\002 \[num=X time=X enc=X word=X,Y,Z\] ; \002!rss list\002 ; \002!rss del &lt;id&gt;\002 ; \002!rss check &lt;link&gt;\002 (checks a RSS link)"   }   default {if {![matchattr $hand $rss(rss_show_flags) $chan]} {   return}if {![info exists rss(rss_list)]} {   set get_list [rss:get_list]if {$get_list == ""} {   putserv "PRIVMSG $chan :No RSS cmds added for \002$chan\002."   return   }}   set data [split $rss(rss_list) "\n"]   set cmds ""foreach line $data {   set read_chan [lindex $line 1]if {[string equal -nocase $chan $read_chan]} {   set id [lindex $line 0]   set cmd [lindex $line 2]   lappend cmds "\#$id $cmd"   }}if {$cmds == ""} {   putserv "PRIVMSG $chan :No RSS cmds added for \002$chan\002."   return}   set cmds [join $cmds ", "]foreach w [rss:wrap $cmds 400 ","] {   putserv "PRIVMSG $chan :\002RSS\002 Cmds \[#ID\]: $w"         }      }   }}#### Creditsset rss(projectName) "BlackRSS TCL"set rss(author) "BLaCkShaDoW"set rss(website) "wWw.TclScripts.Net"set rss(email) "blackshadow@tclscripts.net"set rss(version) "v1.0"#http://wiki.tcl.tk/989proc rss:wsplit {string sep} {    set first [string first $sep $string]    if {$first == -1} {        return [list $string]    } else {        set l [string length $sep]        set left [string range $string 0 [expr {$first-1}]]        set right [string range $string [expr {$first+$l}] end]        return [concat [list $left] [rss:wsplit $right $sep]]    }}###proc b0:short {link} {   set link "http://b0.ro/api/?key=ZLo6F8qQzCPS&amp;url=$link"   set ipq [http::config -useragent "lynx"]   set error [catch {set ipq [::http::geturl "$link" -timeout 10000]} eror]   set status [::http::status $ipq]if {$status != "ok"} {   ::http::cleanup $ipq   return $link}   set data [http::data $ipq]   ::http::cleanup $ipq   regexp {"short":(.*)} $data -&gt; short_link    return [string map { "\"" ""              "\}" ""              "\\" ""} $short_link]}###proc rss:wrap {str {len 100} {splitChr { }}} {   set out [set cur {}]; set i 0   foreach word [split [set str][unset str] $splitChr] {     if {[incr i [string len $word]]&gt;$len} {         lappend out [join $cur $splitChr]         set cur [list $word]         set i [string len $word]      } {         lappend cur $word      }      incr i   }   lappend out [join $cur $splitChr]}putlog "\002$rss(projectName) $rss(version)\002 coded by\002 $rss(author)\002 ($rss(website)): Loaded &amp; initialised.."#################################################################################################################################                  *** END OF BlackTrivia TCL ***                                                 ########################################################################################################## </code></pre></div><p>Statistics: Posted by <a href="https://forum.eggheads.org/memberlist.php?mode=viewprofile&amp;u=12899">flink</a> — Thu Jan 13, 2022 11:02 am</p><hr />
]]></content>
	</entry>
	</feed>
