技術メモスマートフォン用の表示で見るしょんぼり技術メモまいにちがしょんぼりこの広告は、90日以上更新していないブログに表示しています。2.xについての記述です。本記事におけるコードもMITライセンスとします。TwitterIRCGateway(以下TIG)は、TwitterをIRCクライアントから使うことができるゲートウェイアプリケーションです。便利なのですが、あまり紹介されている記事がないので自分で書きます。インストール方法や使い方などは、本家をご覧ください。TypableMapとはデフォルト設定のTIGでは、数あるTwitterクライアントのように、特定の発言に対して返信を行うことができません。発言することで、誰かに対してreplyすることはできますが、どの発言に対してのreplyなのかがTIGにはわからないためです。そこで、これを解決するためにTypableMapという機能を有効化します。TypableMapとは、受け取った全ての発言にある長さの文字列を結びつけ、その文字列で発言を特定するための機能です。することで協調型仮想計算機ができるんだ。←コレこのようになります。ここでは、この発言のTypableMapは"ka"となります。この発言に返信するには、TypableMapの返信コマンド"re"を使います。にわかには信じがたいとIRCクライアントから入力します。にわかには信じがたいこのように、@syonboriへの返信が行われます。Webなどで確認すればわかりますが、syonbori宛、と表示されており、どの発言への返信なのかもわかります。このTypableMapは、返信のほかお気に入りへの追加/削除も可能です。返信と同様に、"fav"/"unfav"コマンドに続けてTypableMapを指定すると、その発言をお気に入りに追加/削除することができます。TypableMapの設定TIGのバージョンアップに伴い、TypableMapの設定の仕方が変わっているのでここで紹介します。TIGを起動し、IRCクライアントで接続します。いうチャンネルに参加します。#Console)これで管理用コンソールにログインできました。設定を行う"Configコンテキスト"に移動するため、"config"と入力します。"show"と入力すると、設定可能な項目一覧と現在の値が表示されます。TypableMapを有効化します。true"と入力します。次に、TypableMapの長さを指定します。1"とすると、TypableMapの文字列の長さが1×2で2文字になります。2を指定すれば、4文字になります。最後に、TypableMapの文字列の色を指定します。4"とすると赤くなります。色と番号の関係は、http://hiki.koubou.com/IRC/?mIrcColorsをご覧ください。これでTypableMapが有効になりました。一度設定を行えば、次回以降は同じことを行う必要はありません。TypableMapとコマンドTypableMapは次のようなコマンドで使用できます。{tm}は対象となる発言のTypableMap文字列です。指定された発言のページのURLを表示するTypableMapを拡張するTIGでは、RubyやPythonを使って機能拡張を行うスクリプトを作成することができます。いくつかスクリプトが置いてあります。いうディレクトリに配置することで、スクリプトが使用可能になります。ディレクトリが存在しない場合には、自分で作ってください。typablemap.rbRubyでTypableMapを拡張する処理を見ていきます。ここでは、ReTweetするための"rt"コマンドを追加している、typablemap.rbを見ていきます。endendまではおまじないだと思ってOKです。具体的には、AddIns::TypableMapをRubyで拡張する宣言や、スクリプト読み込み時にコマンドを追加するための関数、追加したコマンドを終了時に解放する関数などがあります。返すとハンドルしたことになりステータス更新処理は行われないendここです。見分かりづらいですが、流れはReTweet発言を行うその発言結果をチャンネルに表示するこれだけです。わかりにくいのは、Session.RunCheckという関数にブロックを渡しているからでしょう。RunCheck関数は、渡された処理を実行して、必要に応じてエラー処理を行っているようです。Session.send_channel_message(updated_status.text)ここだけです。このあとのブロックは、エラー処理です。@#{status.user.screen_name})"として文字列を作成し、Session.update_status()関数を呼び出しています。これにより、その発言がTwitterに対して行われます。返値は発言ステータスを表すStatusクラスのインスタンスです。最後に、エコーバックのために発言した内容をsend_channel_message()関数で表示します。最後の"true"は返値です。trueを返すと、TypableMapコマンドが受理されたことを意味し、Twitterへの発言にはなりません。falseにしてしまうと、TypableMapコマンドそのものもTwitterに投稿されてしまうので要注意です。@syonbori_test)このような発言が行われるようになります。?簡単でしょ?もっと自分用に拡張する※ここで取り上げるコードの全文は末尾に記載していますでは、自分でいろいろと拡張してみましょう。Scriptsディレクトリに、自分用の拡張スクリプトを配置します。序盤はtypablemap.rbと一緒なので、typablemap.rbをコピーしてリネームすると良いでしょう。typablemap.rbに追記しても構いません。スクリプトに変更を加えた場合でも、TIGを再起動する必要はありません。#ConsoleのDLRコンテキストで、reloadコマンドを実行すれば、リロードが行われます。コマンドでリロード発言者の情報を表示する発言者の情報を表示するi(info)コマンドを、次のようにして作成します。"rt"コマンドと同じように、おまじないのあとに書いてください。返すとハンドルしたことになりステータス更新処理は行われないend発言者の情報が見たいだけで、Twitterに投稿する処理ではありません。そのため、発言するためのupdate_status()関数は使わず、send_server()関数を使って、サーバが発言者の情報をクライアントに返す処理にします。↑これはサーバからのNoticeメッセージで、実際にはTwitterに発言されないTypableMapで指定された発言に関する情報は、status変数に格納されています。status.user(status変数のuserメンバ)に、発言者の情報が格納されています。これが分かれば、あとは文字列を適当に整形して、send_server()関数で表示させるだけです。?簡単でしょ?statusやstatus.userがどんなメンバを持つのかは、http://www.misuzilla.org/~mayuki/misc/twitterircgateway/core-docs/を見てください。SubVersionレポジトリから、プロジェクトを丸ごと落としてきて、コードを眺めるのも良いでしょう。"re"コマンドを拡張するどうやら、Rubyで"re"コマンドを定義すると、既にTIGが持っているTypableMapの"re"コマンドを上書きできるようです。そこで、"re"コマンドを返信メッセージ無しで実行した場合に、返信発言を行わないように拡張してみましょう。これは、"fav"と"re"を間違えてしまい、ふぁぼるつもりが空の返信発言になってしまった!ということを予防します。返すとハンドルしたことになりステータス更新処理は行われないendまぁ、これだけです。空かどうかで発言するかどうかのチェックをしていること、update_status()関数の第二引数にIDを渡すと、そのIDの発言への返信になること、です。20:46TwitterIRCGatewayをより(俺にとって)便利にするTweet広告を非表示にする関連記事2010-10-13そうだ、DNSを調べよう。なんかYahooにつながらないネタがHOTなので。液晶モニタの下にサウンドバーを下げるホルダを作ったダイソー3000mAhモバイルバッテリの吊り下げ用ケースを作った激安自由雲台ではんだ付け作業用クリップ台を作った2019年1月期アニメ履修レポート在宅医療を少しだけ改善する小物を3DプリンタとTPUフィラメントで作った月別アーカイブはてなブログをはじめよう!syonbori_techさんは、はてなブログを使っています。ブログを報告するスターをつけました引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。