Перейти к содержимому


Фотография

safeload.tcl


  • Авторизуйтесь для ответа в теме
В этой теме нет ответов

#1 tvrsh

tvrsh

    Активный участник

  • Администратор
  • 389 сообщений
  • Пол:Мужчина
  • Город:Russian Federation, Podolsk
  • Ник в сети:tvrsh
  • Каналы:#egghelp, #3hauka, #bash.org

Отправлено 30 мая 2008 - 06:21

Этот скрипт позволяет избежать падений бота при загрузке скриптов с ошибками, которые могут к этому привести.
Пример использования:

[10:10:12] <@tvrsh> !load
[10:10:12] <+bionic> -(Load)- !load <scriptname.tcl> -(Info)-
# Тут пробуем подгрузить скрипт.
[10:10:16] <@tvrsh> !load bart.tcl
# Бот сообщает что в скрипте ошибка и показывает ее.
[10:10:16] <+bionic> -(Load)- Script: bart.tcl Size: 5.90625 Kb Status: Error -(Info)-
[10:10:16] <+bionic> -(Load)- can't read "bartlist": no such variable -(Info)-
# После исправления ошибки снова подгружаем скрипт.
[10:10:41] <@tvrsh> !load bart.tcl
# Бот сообщает что все в порядке.
[10:10:41] <+bionic> -(Load)- Script: bart.tcl - Size: 5.9072265625 Kb - Status: OK -(Info)-
# Скрипт работает.
[10:10:48] <@tvrsh> !барт
[10:10:48] <+bionic> [28/110] Я не буду выпендриваться.


set lflags "n"
	  set lscriptsdir "scripts"
	  set ltrigger "!"
	  
	  bind pub $lflags ${ltrigger}load load:file
	  
	  
	  proc load:file {nick host hand chan text} {
		  global lscriptsdir  ltrigger
 		set file [lindex [split $text] 0]
		  if {$file == ""} {
			  putserv "PRIVMSG $chan :-(Load)- ${ltrigger}load <scriptname.tcl> -(Info)-"
 			return 0
		  } elseif {![file exists [file join $lscriptsdir $file]]} {
			  putserv "PRIVMSG $chan :-(Load)- Sorry $file doesn`t exists -(Info)-"
 			return 0
 		} else {
 			set kbsize [expr {[file size [file join $lscriptsdir/$file]] / 1024.0}]
 			if {[catch {uplevel "source [file join $lscriptsdir $file]"} error]} {
 				putserv "PRIVMSG $chan :-(Load)- Script: $file Size: $kbsize Kb Status: Error -(Info)-"
 				putserv "PRIVMSG $chan :-(Load)- $error -(Info)-"
 			} else {
 				putserv "PRIVMSG $chan :-(Load)- Script: $file - Size: $kbsize Kb - Status: OK -(Info)-"
 			}
		  }
	  }
(с) http://tclhelp.net/
http://ircnet.su/
#egghelp @ IrcNet.Ru




Количество пользователей, читающих эту тему: 0

0 пользователей, 0 гостей, 0 анонимных