問題タブ [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 の問題を理解する際の問題

過去 2 日間、頭を悩ませている問題が発生しました。

トリガーされるとローカルシェルコマンド(子プロセス)を実行するtclスクリプト(eggdrop用)を実行しています。コマンドが成功すると、結果が出力されます。ただし、コマンドが成功しない場合は、エラーが発生します " Tcl error [proc_ports]: child process exited abnormally:.

子プロセスが結果を見つけられなかった場合、私が望むのはカスタム応答を作成することです。

スクリプトは次のとおりです。

execをエラーを返すシェルスクリプトに変更するのではなく、TCLを使用してこれを解決し、詳細を学びたいと思います。

私はTCLのCATCHコマンドを読み、スクリプトに対してさまざまなアプローチを試みましたが、すべて失敗しました:(

どんな助けでも大歓迎です。

乾杯。

0 投票する
1 に答える
533 参照

tcl - regsubは、irc制御文字に対して、lindexインデックスとして一致します

ええと、私は過去10時間以上インターネットを検索してきましたが、これに関しては運も成功もありませんでした。

irc制御コード(色など)をhtmlに変換しようとしています。これは、eggdroptclバインドイベントから取得した入力テキストです。太字/下線は正常に機能します。イタリックはまだテストされていませんが、問題はありません。

..問題は、私の正規表現が間違った文字と一致しているように見えることです。\003(\d+)[,]?(\d*)(.*?)正規表現を設定しました-コーディング(主にphp / js)の以前の経験からの知識があると想定しました-制御文字の後の数字が必要なため、リストのインデックスとして使用するために、と照合します。必要なhtmlの16進色を引き出します。ただし、プルされる数字は、端末に正しく表示されない数字でさえないように見え、代わりに制御文字であるように見えます(geditを使用した私の経験から)。

私のプロセスのコードは以下のとおりです。これは、テキストをファイルに記録する、より大きなスクリプトの一部です。他のすべては機能しますが、このプロセスです。

質問に..私はここで正確に何を間違えましたか?私が受け取った唯一のエラーメッセージは、「(制御文字)無効なインデックス」に似たものです。

0 投票する
1 に答える
413 参照

utf-8 - utf-8文字をeggdropを介してhtmlエンティティに変換する際の問題

最初にこれを邪魔にならないようにするために..私はすでにutf-8エンコーディングでeggdropを再コンパイルしました。エスケープシーケンスをstrings()で記述すると、utf-8文字をエコーアウトできます\u00a7が、何らかの理由でまだ理解できません。正規表現を使用して、対応する文字と比較することはできません。

tclでコーディングされたeggdropに基づくロギングスクリプトを開発しようとしています。私はすでに数時間を研究以外の何もしていませんが、そこに助けがないか、間違った場所を探しています。

入力文字列§は、ボットがオンになっているircチャネルでユーザーが入力します。Linux側のロギングスクリプトは、この文字を特殊制御文字(I -think-)として解釈し、geditで、外観が「FFA7」のように見える2行の特殊文字としてレンダリングし、最初の行にFFがあります。 2番目のA7は、すべてボックスで囲まれています。

私の正規表現は非常に単純です:

もちろん私も試しました:

残念ながら、すでに述べたように..それは動作しません。毎回0を取得します。つまり、文字と一致することはありません。

私が行ったすべての調査では、eggdropが文字列をtclスクリプトに送信している形式を把握できませんでした。唯一の作業は、そのボックスのような文字をgeditからスクリプトに直接コピーすることです。しかし、この文字を複製できないとすると、コーディングがかなり不可能になります。

質問に対して..ボットから送信された文字列を解釈して、その中の特殊文字をhtmlエンティティに正しく変換できる正しい方法があるかどうか、ここで何が間違っているのか疑問に思っています。

0 投票する
1 に答える
718 参照

mysql - mysql 接続を開いたままにする

私は、いくつかのパブリック IRC チャネルのアクティビティをデータベースに書き込むための Eggdrop tcl スクリプトを作成しています (時間の経過とともに、これは 10 から 15 チャネルになると思います)。データベース接続を処理する方法として 2 つのオプションがあります。

  1. ユーザーが何かを言う -> データベースへの mysql 接続を開く -> ユーザーが言ったことに関する情報を挿入する -> 接続を閉じる
  2. ボットを開始 -> データベースへの mysql 接続を開く -> チャネル アクティビティがある場合に情報を挿入 -> 詳細情報を待つ など。

ケース1を使用する方が良いと思いますが、チャネルアクティビティが多い場合、毎回接続を開いたり閉じたりすると、サーバーの負荷が大きくなり、しばらくすると速度が大幅に低下すると思います.

これを行う最善の方法は何ですか?

0 投票する
1 に答える
541 参照

mysql - Mysqltcl foreach ループ tcl

私の問題は、最初のセットの戻り値が $sub1 をドロップしてから、文字列の一致で使用できるようになるため、スクリプトが続行されないことです。最初のセット リターン内に残りのスクリプトを含めようとしましたが、機能しますが...ユーザーに複数のメッセージが表示され、他の 2 セット リターンのチャネルが返されます。

とにかく、「foreach サブ」の for each サブが pm ユーザーと pm チャネルの行を生成しているため、ユーザーとチャネルに複数のメッセージを送信しないように修正します。データベース内の一致数に応じて、200 件のメッセージ。

正確に何を達成しようとしているのかを説明するのは難しいです。

結局、私が到達しようとしている結果は...

  • 正規表現から $subscription を設定します
  • DB 内のすべてのサブを一覧表示する
  • DB のサブ内のすべての % を次の Match の * に変換します
  • サブを $subscription に一致させてみてください
  • 一致する場合は、次の SELECT に進みます
  • サブが %sub% のような DB からすべての「USERS」を選択します
  • 次に、選択に一致するメッセージを各ユーザーに送信します
  • 最後のセットの戻り値は、選択に一致するユーザーの数をカウントし、チャネルにメッセージを送信します

ドナルが提案した解決策を使用した後。小さな問題が 1 つありますが、すべてが正常に機能しているようです。コードの [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ますが、チャネル名の現在の状態のために前者が書き込まれます (すべてのユーザーが離れて、​​別のケースで 1 人が再参加すると変更される可能性があります)。

私はこの問題を、私が問題であると信じているものに絞り込みました。 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 を取得します: -ltcl8.5.so が見つかりません

- - - - - うん!それがコンパイルで、リンクです。----------

Eggdrop をリンクする (標準ビルド)。

私が間違っていることはありますか?

0 投票する
1 に答える
482 参照

tcl - このeggdrop TCLスクリプトを変更して、少し異なる動作をさせるにはどうすればよいですか

特定のイベントまでのカウントダウンを行うために、単純なエッグドロップ ボットを設定しようとしています。アイデアは、あらかじめ決められた日時を指定し、ユーザーが !countdown と入力すると、ボットが「それが起こるまで x 日、x 時間、x 分あります」と返信するというものです。これは私が見つけたスクリプトです (イベントの unixtime 日付を代わりに追加するためだけに変更されています)。私の Eggdrop ボットで実行すると、応答が返されますが、もちろん、必要な応答ではありません (重要な問題は、それがまったく機能したということです)。

それが行うことと私がやりたいことの間に大きな違いはないと思いますが、正しく変更する方法がわかりません。だから、ここにいる誰かが、私がやろうとしていることのやり方を教えてくれるだろうかと思った.