This repository has been archived by the owner on Mar 22, 2020. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathio.rb
135 lines (103 loc) · 3.86 KB
/
io.rb
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
#!/usr/local/bin/ruby
# -*- coding: utf-8 -*-
#
# 一ファイル入出力をまとめるクラス
class File_io
def initialize path
# path が存在するか一応確認する
file_check path
@path = path
files_load
end
def files_load
# リプライ用各種ファイルの存在確認 + ロード
# それぞれのファイル名は今のところベタ書き
normal_reply_filename = "normal_replys.txt"
add_reply_filename = "add_replys.txt"
illegal_reply_filename = "illigal_replys.txt"
multiline_reply_filename = "multiline_replys.txt"
many_username_reply_filename = "many_username_replys.txt"
# リプライ用各種ファイルのロード
@replys = {}
@replys[:normal_replys] = open_file "#{@path}/#{normal_reply_filename}"
@replys[:add_replys] = open_file "#{@path}/#{add_reply_filename}"
@replys[:illigal_replys] = open_file "#{@path}/#{illegal_reply_filename}"
@replys[:multiline_replys] = open_file "#{@path}/#{multiline_reply_filename}"
@replys[:many_username_replys] = open_file "#{@path}/#{many_username_reply_filename}"
# メッセージ追加用ファイルの存在確認
# ファイル名は今のところベタ書き
@add_tweet_file = "tweet_ngskbot.txt"
@add_tweet_log_file = "tweet_ngskbot_log.txt"
file_check "#{@path}/#{@add_tweet_file}"
file_check "#{@path}/#{@add_tweet_log_file}"
# 定期つぶやき用のファイルもロード
@tweet = open_file "#{@path}/#{@add_tweet_file}"
end
attr_reader :tweet
def add_tweet tweet,debug = true
# めいげんの追加書き込み + ログ書き込みをする
# 念のためデフォルトのデバッグフラグはtrue
if debug
puts
puts "----- (debug mode : check write tweet ) ------"
puts "追加予定の内容"
puts get_text tweet.text
puts "追加予定のログ"
puts get_log tweet
puts "---- (debug mode : check write tweet end ) ----"
puts
else
add_message("#{@path}/#{@add_tweet_file}",get_text(tweet.text)) # ツイート書き込み
add_message("#{@path}/#{@add_tweet_log_file}",get_log(tweet)) # ログ書き込み
end
end
def get_reply_random reply_kind
# リプライのパターンを指定すると、そこからランダムに取ってくる
@replys[reply_kind].sample
end
private
def file_check path
if !FileTest.exist? path
puts "#{path} は存在しません。終了します。"
exit
end
end
def open_file file_path
# ファイルの内容をすべて読みこんで返す
# ファイルの存在確認
file_check file_path
# 読み込み
f = File.open(file_path,"r")
file_text = f.read
f.close
file_text.split "\n"
end
def add_message file_path,msg
# 指定ファイルに追加書き込みをする
f = File.open(file_path,"a+")
f.puts msg
f.close
end
def get_text msg
# ツイートから追加用テキストを取得する。
# 夜フクの非公式RTを前提。
# 今のところ結構ゴリ押し。
# 非公式RTについてくる " :" で分割
# 二番目にテキストが入ってくるので取りだす
msg = msg.split(": ")[1]
# 多段非公式RT会話時には、本人の最新発言部分のみもってくる
# "RT "で分割。 会話内に入っている場合は分割点がずれる
# 本人の最新発言分なので、先頭を取りだす
msg = msg.split("RT ")[0]
# リプライになりかねないように、@userなやつは消す。
# ループで全部消す。
while msg != msg.sub(/@[^ ]* /,"")
msg = msg.sub(/@[^ ]* /,"")
end
msg
end
def get_log tweet
# ログ追加用のテキストを取得する
"#{tweet.id} : #{tweet.user.screen_name}"
end
end