1622 への返信

write(String str) についてアトグラ - No.1622
いつもLIMECHATをありがたく活用させて頂いております。

最近スクリプトを弄り始めたのですが、write(String str)が機能しません。
スクリプトで「既存のトピックに追記を行う」という事をやりたいのですが、
そのために外部テキストに既存のトピの保存を行う必要がありそうな気がしたので…。

とりあえず外部ファイルへの出力部分だけを見て頂こうと思いお伺いしました。
如何せん始めたばかりで記述が間違っている可能性もあるので…。

function event::onTopic(prefix, channel, topic)
{
var file = fileOpen('topic.txt');
file.write(topic);
file.close();
}

scriptフォルダ下のfilesフォルダにtopic.txtはあります。
そして、topic.txtを適当な内容で保存し、readAll()しても読み込めます。
しかしwrite(String str);で書き込みを行ってくれないのです。
エラーも出ないのでどうしたらいいものか…。
改善案などありましたらよろしくお願いします。
Psychs - No.1623
ヘルプに

File openFile(String filename, [boolean readOnly=true, int codePage=CP_UTF8])

とあるように、openFile の第2引数を省略すると read only になるので、

var file = openFile('topic.txt', false);

とすればいいでしょう。
アトグラ - No.1625
成る程…読み取り専用になってしまうわけですね。
お陰様で無事ファイルに書きこむ事が出来ました。ありがとうございました。

質問に答えてもらった後で申し訳ないと思いつつも、
もう一つだけ質問をお願いしてもよろしいでしょうか…。
function event::onTopic(prefix,channel,topic){}
以外の関数で、現在のトピックを取得する方法ってあるのでしょうか?
入室した時のシステムメッセージからでもトピックを取得等出来れば、
それに似通った事が出来そうな気もしますが…。度々申し訳ないです。
Psychs - No.1626
現在のトピックを取得する簡単な方法は、いまのところないです。

チャンネルに入った直後か、topic(channel); を実行すると、
332 リプライが返ってくるので、それを onNumericReply で拾ってください。

詳しくは、RFC2812 を参照しつつ、プロトコルログを確認してみてください。
アトグラ - No.1629
onNumericReplyで取得出来ました!ありがとうございます。
お陰様でバグだらけではあるもののなんとかスクリプトが完成しました。
これからこつこつ手直ししてまともに利用できるようなものにしたいです。
初心者にこうも丁寧に教えて頂き本当に感謝です…。

以下の項目を必ず守ってください。守っていない書き込みは無視されるかも知れません。

あなたにとっては1回の質問でも、答える側は1回ではないことを理解してください。

  • 文章はきちんと状況が伝わるように丁寧に書いてください。
  • 話し言葉での書き込みは禁止します。
  • 過去ログを検索して確認してから書き込んでください。
  • 内容がわかるタイトルをつけること。要望する場合は[要望]を先頭につけること。
  • 動作確認はかならず最新版で行ってください。
  • 不適切な文章は、管理人が削除、編集することがあります。
名前*
メッセージ*
パスワード (編集・削除に使用。16文字以内)