问题标签 [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.

0 投票
2 回答
3423 浏览

exec - 理解 TCL CATCH exec 问题的问题

在过去的两天里,我遇到了一个问题。

我正在运行一个 tcl 脚本(对于一个 eggdrop),当它被触发时,它会执行一个本地 shell 命令(子进程),如果命令成功,它会吐出结果。但是,如果命令不成功,我会收到一个错误“ Tcl error [proc_ports]: child process exited abnormally:.

如果子进程没有找到任何结果,我想要创建一个自定义响应。

脚本是:

我很想使用 TCL 解决这个问题,以帮助我了解更多信息,而不是将 exec 更改为会返回任何错误的 shell 脚本。

我已经阅读了 TCL 中的 CATCH 命令,并尝试了许多不同的脚本方法,但是都失败了:(

任何帮助,将不胜感激。

干杯。

0 投票
1 回答
533 浏览

tcl - regsub 匹配为 lindex 索引,针对 irc 控制字符

好吧,在过去的 10 多个小时里,我一直在互联网上搜索,但没有运气或成功。

我正在尝试将 irc 控制代码(颜色等)转换为 html,输入文本是从 eggdrop tcl 绑定事件中提取的。粗体/下划线工作正常..尚未测试斜体,但这不是问题所在。

..问题是,我的正则表达式似乎匹配了错误的字符。我设置了我的正则表达式——我假设从以前的编码经验中了解(主要是 php/js)——来匹配\003(\d+)[,]?(\d*)(.*?),因为我想要控制字符后面的数字,然后用作列表中的索引,提取必要的 html 十六进制颜色。但是,被拉出的数字似乎甚至不是数字,在终端中没有正确显示,而是似乎是一个控制字符(根据我使用 gedit 的经验)。

我的过程的代码如下,它是一个更大的脚本的一部分,它将文本记录到一个文件中。其他一切都有效,但这个过程。

对于这个问题..我到底做错了什么?我收到的唯一错误消息类似于“(控制字符)无效索引”。

0 投票
1 回答
413 浏览

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 实体。

0 投票
1 回答
718 浏览

mysql - 保持mysql连接打开

我正在制作一个 eggdrop tcl 脚本来将几个公共 IRC 频道的活动写入数据库(随着时间的推移,我认为这将是 10 到 15 个频道)。我有两种选择如何处理数据库连接。

  1. 用户说了些什么 -> 打开与数据库的 mysql 连接 -> 插入有关用户所说内容的信息 -> 关闭连接
  2. 启动机器人 -> 打开与数据库的 mysql 连接 -> 在有通道活动时插入信息 -> 等待更多信息等。

我认为使用案例 1 更好,但是当有很多通道活动时,我认为每次打开和关闭连接都会导致服务器负载过大,并在一段时间后大幅减慢速度。

最好的方法是什么?

0 投票
1 回答
541 浏览

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 这意味着它应该匹配两个部分并获得准确的计数和用户。

0 投票
3 回答
1216 浏览

tcl - 文件的不区分大小写版本存在命令

好吧,不知道在这方面该怎么做。不久前,我修改了一个 Eggdrop 机器人的日志记录脚本。但现在出现了一个问题,由于某种原因,由于字符大小写问题,它正在将操作/文本记录在单独的文件中。 #channel.html一样存在#Channel.html,尽管前者是由于频道名称的当前状态而被写入的(如果所有用户离开并且一个人以不同的大小写重新加入,它可能会改变)。

我已将这个问题缩小到我认为是问题的范围。 file exists 'filename_here'. 我已经查看了 tcl 的文档,并且我已经阅读了有关混合大小写文件名的 wiki(它当然将它们视为不同的文件),但我还没有找到这样的选项(或用户制作的 proc)允许我禁用此行为。

有没有办法/可以做到这一点?

0 投票
0 回答
268 浏览

tcl - TCL 我想阅读 fail2ban 新日志并将它们打印到某个频道

当文件大小或行数更改时,我想从 fail2ban 日志中读取所有新行。我只想将 fail2ban 日志中的新行打印到指定通道。

我尝试:

但不起作用:/

任何解决方案或解释如何制作?

0 投票
1 回答
3019 浏览

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

0 投票
0 回答
1332 浏览

c - /usr/bin/ld: 找不到 -ltcl8.5.so

我正在尝试编译一个蛋滴。我通过编译并尝试“make”但得到 /usr/bin/ld: cannot find -ltcl8.5.so

- - - - - 是的!这是编译,现在是链接!----------

链接 Eggdrop(标准构建)。

任何想法我做错了什么?

0 投票
1 回答
482 浏览

tcl - 如何修改这个 eggdrop TCL 脚本以使其工作方式有所不同

我正在尝试设置一个简单的蛋滴机器人来倒计时直到某个事件。我的想法是我给它一个预定的日期和时间,用户输入 !countdown 并且机器人回复“还有 x 天、x 小时、x 分钟直到它发生”。这是我找到的脚本(仅更改为添加事件的 unixtime 日期代替它所具有的),并在我的 eggdrop 机器人上运行它会给出响应,但当然这不是我需要的响应(重要的问题是它完全有效)。

我认为它的作用和我想要它做的事情之间没有很大的区别,但我不知道如何正确修改它。所以我想知道这里是否有人可以告诉我如何做我想做的事情。