我制作了这个在 Eggdrop v1.6.21 下运行的脚本,但我无法启动它。我收到的错误是:
文件“eggdrop.conf”中的 Tcl 错误:
错误 # args: 应该是“proc name args body”
执行时
“proc logit {昵称主机句柄通道文本} {
可能是什么问题呢?这是我的脚本。
package require mysqltcl
set port {3306}
set host {127.0.0.1}
set user {database_user}
set password {database_password}
set db {database_name}
bind pubm - "*" logit
proc logit {nick uhost handle channel text} {
global port
global host
global user
global password
global db
if {[string match {database_name}} $channel] == 0} {
set mysql_handler [mysqlconnect -host $host -port $port -user $user -password $password -db $db]
set sql "insert into irc_feed (nickname, host, message) values ('[mysqlescape $nick]', '[mysqlescape $uhost]', '[mysqlescape $text]')"
mysqlexec $mysql_handler $sql
mysqlclose $mysql_handler
}
}
非常感谢你。
问题是在if
条件:有一个额外的}
后{database_name}
。它导致过程主体过早关闭,if
命令主体成为意外的额外参数proc
(最后一个右大括号成为无效命令)。
这可以称为解析时错误。如果一个错误一直到执行(运行时错误),Tcl 通常对这种情况有足够的了解以产生更好的错误消息。
然而此时,Tcl 解释器只知道它正在尝试执行一个带有三个参数的命令,而它已经被赋予了四个参数。因此,错误消息非常模糊。
但是,当发出“错误的#args”错误信号时,通常要么在不应该插入的地方插入空格,要么括号不匹配。大括号匹配编辑器在后一种情况下非常有用。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句