问题标签 [eggdrop]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
exec - 理解 TCL CATCH exec 问题的问题
在过去的两天里,我遇到了一个问题。
我正在运行一个 tcl 脚本(对于一个 eggdrop),当它被触发时,它会执行一个本地 shell 命令(子进程),如果命令成功,它会吐出结果。但是,如果命令不成功,我会收到一个错误“ Tcl error [proc_ports]: child process exited abnormally
:.
如果子进程没有找到任何结果,我想要创建一个自定义响应。
脚本是:
我很想使用 TCL 解决这个问题,以帮助我了解更多信息,而不是将 exec 更改为会返回任何错误的 shell 脚本。
我已经阅读了 TCL 中的 CATCH 命令,并尝试了许多不同的脚本方法,但是都失败了:(
任何帮助,将不胜感激。
干杯。
tcl - regsub 匹配为 lindex 索引,针对 irc 控制字符
好吧,在过去的 10 多个小时里,我一直在互联网上搜索,但没有运气或成功。
我正在尝试将 irc 控制代码(颜色等)转换为 html,输入文本是从 eggdrop tcl 绑定事件中提取的。粗体/下划线工作正常..尚未测试斜体,但这不是问题所在。
..问题是,我的正则表达式似乎匹配了错误的字符。我设置了我的正则表达式——我假设从以前的编码经验中了解(主要是 php/js)——来匹配\003(\d+)[,]?(\d*)(.*?)
,因为我想要控制字符后面的数字,然后用作列表中的索引,提取必要的 html 十六进制颜色。但是,被拉出的数字似乎甚至不是数字,在终端中没有正确显示,而是似乎是一个控制字符(根据我使用 gedit 的经验)。
我的过程的代码如下,它是一个更大的脚本的一部分,它将文本记录到一个文件中。其他一切都有效,但这个过程。
对于这个问题..我到底做错了什么?我收到的唯一错误消息类似于“(控制字符)无效索引”。
utf-8 - 通过 eggdrop 将 utf-8 字符转换为 html 实体时遇到问题
首先要解决这个问题。我已经在 utf-8 编码下重新编译了 eggdrop。如果我在 strings( \u00a7
) 中编写转义序列,我可以回显 utf-8 字符,但由于某种原因,我还无法弄清楚.. 我无法使用正则表达式将它们与对应的字符进行比较。
我正在尝试开发一个基于 eggdrop 的日志记录脚本,在 tcl 下编码。我已经花了几个小时只做研究,但要么没有任何帮助,要么我找错了地方。
用户在机器人所在的 irc 频道中键入输入字符串 §。linux 端的日志记录脚本将此字符解释为特殊控制字符(I -think-),并在 gedit 中呈现为外观类似于 'FFA7' 的两行特殊字符,FF 在第一行,第二个A7,全部装在一个盒子里。
我的正则表达式很简单:
我当然也尝试过:
不幸的是,正如已经说过的......它不起作用。我每次都得到一个 0,这意味着它永远不会匹配字符。
对于我所做的所有研究,我一直无法弄清楚 eggdrop 将字符串发送到 tcl 脚本的格式。唯一有效的方法是将那个类似盒子的字符从 gedit 直接复制到脚本中。但考虑到我无法复制这个字符,否则编码变得相当不可能。
对于这个问题..我想知道我在这里做错了什么,如果实际上有正确的方法来解释机器人发送的字符串,那么我可以正确地将其中的特殊字符转换为 html 实体。
mysql - 保持mysql连接打开
我正在制作一个 eggdrop tcl 脚本来将几个公共 IRC 频道的活动写入数据库(随着时间的推移,我认为这将是 10 到 15 个频道)。我有两种选择如何处理数据库连接。
- 用户说了些什么 -> 打开与数据库的 mysql 连接 -> 插入有关用户所说内容的信息 -> 关闭连接
- 启动机器人 -> 打开与数据库的 mysql 连接 -> 在有通道活动时插入信息 -> 等待更多信息等。
我认为使用案例 1 更好,但是当有很多通道活动时,我认为每次打开和关闭连接都会导致服务器负载过大,并在一段时间后大幅减慢速度。
最好的方法是什么?
mysql - mysqltcl foreach 循环 tcl
我的问题是第一组返回会在 $sub1 可用于字符串匹配之前删除它,因此脚本不会继续。我试图将脚本的其余部分包含在第一组返回中并且它可以工作,但是......我收到多条消息给用户和其他 2 组返回的通道。
无论如何要修复它,以便它不会向用户和频道发送多条消息,因为“foreach sub”中的每个 sub 正在为 pm user 和 pm channel 生成一条线,该线可以是 1 或 2 条消息到200 条消息,取决于数据库中有多少匹配项。
很难解释我到底想要完成什么。
最后我试图达到的结果是......
- 从正则表达式设置 $subscription
- 列出数据库中的所有潜艇
- 将数据库中 sub 中的所有 % 转换为 * 以进行以下匹配
- 尝试将 sub 与 $subscription 匹配
- 如果它们匹配,则继续下一个 SELECT
- 从 sub 类似于 %sub% 的数据库中选择所有“用户”
- 然后向每个用户发送与选择匹配的消息
- last set return 统计与 select 匹配的用户数并向频道发送消息
使用Donal建议的解决方案后。一切似乎都表现得像它应该有的一个小问题。代码的 [string match -nocase [get_subscription $SQL(conn)]* $subscription] 部分没有将每个都保存为要检查的变量。哪一行首先出现,它改为使用并停止而不是完成列表以查看是否还有更多匹配项。一些条目以不同的方式添加,但应提供相同的结果。例如,某些条目被添加为 The.TV.Show.S01 或 The%TV%Show%S01 这意味着它应该匹配两个部分并获得准确的计数和用户。
tcl - 文件的不区分大小写版本存在命令
好吧,不知道在这方面该怎么做。不久前,我修改了一个 Eggdrop 机器人的日志记录脚本。但现在出现了一个问题,由于某种原因,由于字符大小写问题,它正在将操作/文本记录在单独的文件中。 #channel.html
一样存在#Channel.html
,尽管前者是由于频道名称的当前状态而被写入的(如果所有用户离开并且一个人以不同的大小写重新加入,它可能会改变)。
我已将这个问题缩小到我认为是问题的范围。 file exists 'filename_here'
. 我已经查看了 tcl 的文档,并且我已经阅读了有关混合大小写文件名的 wiki(它当然将它们视为不同的文件),但我还没有找到这样的选项(或用户制作的 proc)允许我禁用此行为。
有没有办法/可以做到这一点?
tcl - TCL 我想阅读 fail2ban 新日志并将它们打印到某个频道
当文件大小或行数更改时,我想从 fail2ban 日志中读取所有新行。我只想将 fail2ban 日志中的新行打印到指定通道。
我尝试:
但不起作用:/
任何解决方案或解释如何制作?
makefile - Makefile.in:12: *** 命令在第一个目标之前开始。停止
当我尝试运行“make clean”时,它给了我make: ** No rule to make target clean'. Stop.
所以我愿意make -f Makefile.in clean
它告诉我Makefile.in:12: *** commands commence before first target. Stop.
我进入 Makefile.in 并删除了第 12 行的选项卡并重试
make -f Makefile.in clean
但它给了我Makefile.in:12: *** missing separator. Stop.
有谁知道这里发生了什么?我真的很感激一些帮助。
评论太长了:
检查 Tcl 库... 未找到 检查 Tcl 头... 找到 /usr/local/include/tcl.h 检查 Tcl 系统是否已更改... 是 配置:错误:
在这个系统上找不到 Tcl。
Eggdrop 需要 Tcl 和 Tcl 开发文件来编译。如果您已经在这个系统上安装了 Tcl,请确保您也有开发文件(常见的包名称包括 'tcl-dev' 和 'tcl-devel')。如果我只是没有在正确的地方寻找它,请使用 --with-tcllib='/path/to/libtcl.so' 和 --with-tclinc='/path/to 重新运行 ./configure /tcl.h' 选项。
有关详细信息,请参阅 doc/COMPILE-GUIDE 的“Tcl 检测和安装”部分。
我正在按照本指南正确安装 tcl。http://botlending.com/docs/eggdrop/compile/19#19
c - /usr/bin/ld: 找不到 -ltcl8.5.so
我正在尝试编译一个蛋滴。我通过编译并尝试“make”但得到 /usr/bin/ld: cannot find -ltcl8.5.so
- - - - - 是的!这是编译,现在是链接!----------
链接 Eggdrop(标准构建)。
任何想法我做错了什么?
tcl - 如何修改这个 eggdrop TCL 脚本以使其工作方式有所不同
我正在尝试设置一个简单的蛋滴机器人来倒计时直到某个事件。我的想法是我给它一个预定的日期和时间,用户输入 !countdown 并且机器人回复“还有 x 天、x 小时、x 分钟直到它发生”。这是我找到的脚本(仅更改为添加事件的 unixtime 日期代替它所具有的),并在我的 eggdrop 机器人上运行它会给出响应,但当然这不是我需要的响应(重要的问题是它完全有效)。
我认为它的作用和我想要它做的事情之间没有很大的区别,但我不知道如何正确修改它。所以我想知道这里是否有人可以告诉我如何做我想做的事情。