FbRuby 0.0.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
data/README.md ADDED
@@ -0,0 +1,876 @@
1
+ # FbRuby
2
+
3
+ **FbRuby** adalah library sederhana yang di gunakan untuk scraping web Facebook.
4
+
5
+ # Informasi Library
6
+ *Author :* [**Rahmat adha**](https://facebook.com/Anjay.pro098)\
7
+ *Library :* [**FbRuby**](https://github.com/MR-X-Junior/FbRuby)\
8
+ *License:* [**MIT License**](https://github.com/MR-X-junior/fbruby/blob/main/LICENSE)\
9
+ *Release:* 08/07/2024\
10
+ *Version :* **0.0.1**
11
+
12
+ Library ini merupakan remake dari library [fbthon](https://github.com/MR-X-Junior/fbthon)\
13
+ Di karenakan library ini masih versi pertama, pasti bakal banyak error/bug nya, jika menemukan error/bug pada library ini bisa langsung posting di [Issues](https://github.com/MR-X-junior/fbruby/issues) akun github saya :)
14
+
15
+ **Ini bukan dokumentasi full dari library FbRuby, masih banyal hal yang bisa di lakukan menggunakan library ini.**
16
+ **Dokumentasi ini hanya memuat fitur umum yang di gunakan untuk scraping web facebook**
17
+
18
+ ## Contoh Cara Penggunaan
19
+
20
+ ### Pertama-tama buat dulu object `Facebook` menggunakan cookie
21
+
22
+ ```ruby
23
+ irb(main):001:0> require 'FbRuby'
24
+ irb(main):002:0> fb = FbRuby::Facebook.new("datr=xxxx")
25
+ ```
26
+
27
+ ### Jika tidak tidak mempunyai Cookie akun facebook, kamu bisa coba cara di bawah ini
28
+
29
+ ```ruby
30
+ irb(main):001:0> require 'FbRuby'
31
+ irb(main):002:0> email = "example@gmail.com"
32
+ irb(main):003:0> password = "admin123#"
33
+ irb(main):004:0> login = FbRuby::Login::Web_Login.new(email,password)
34
+ irb(main):005:0> cookie = login.get_cookie_str() # Ini adalah cookie akun Facebook kamu
35
+ irb(main):006:0> fb = FbRuby::Facebook.new(cookie)
36
+ ```
37
+
38
+ Cara di [atas](#Jika-tidak-tidak-mempunyai-Cookie-akun-facebook-kamu-bisa-coba-cara-di-bawah-ini) akan login ke akun facebook, cara ini mungkin akan membuat akun facebook kamu terkena checkpoint.
39
+
40
+ Untuk mengurangi risiko akun terkena checkpoint, kamu hanya perlu mengganti user-agent yang sama dengan perangkat yang terakhir kali di gunakan untuk login akun facebook.
41
+
42
+ ```ruby
43
+ irb(main):001:0> require 'FbRuby'
44
+ irb(main):002:0> user_agent = {'User-Agent'=>'Mozilla/5.0 (Linux; Android 6.0.1; SM-J510GN Build/MMB29M) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.111 Mobile Safari/537.36'}
45
+ irb(main):003:0> email = "example@gmail.com"
46
+ irb(main):004:0> password = "admin123#"
47
+ irb(main):005:0> login = FbRuby::Login::Web_Login.new(email,password,headers: user_agent)
48
+ irb(main):006:0> cookie = login.get_cookie_str() # Ini adalah cookie akun Facebook kamu
49
+ irb(main):007:0> fb = FbRuby::Facebook.new(cookie)
50
+ ```
51
+
52
+ #### Optional Parameter
53
+ *(Untuk `Web_Login` class)*.
54
+
55
+ - **email**: Email akun Facebook, kamu juga bisa menggunakan id atau username sebagai pengganti email
56
+ - **password**: Password akun Facebook
57
+ - **save_login**: Menyimpan informasi login, default argument ini adalah `true`
58
+ - **free_facebook**: Gunakan `true` jika ingin menggukan web [free.facebook.com](https://free.facebook.com), default argument ini adalah `False`
59
+ - **headers**: ini yang akan di gunakan untuk headers `requests`
60
+
61
+ ### Extract Profile
62
+
63
+ Method `get_profile` dapat mengekstrak informasi dari akun facebook, Method ini akan mengembalikan object `User`
64
+
65
+ ```ruby
66
+ irb(main):003:0> zuck = fb.get_profile("zuck")
67
+ irb(main):004:0> zuck.name
68
+ => "Mark Zuckerberg"
69
+ irb(main):005:0> zuck.id
70
+ => "4"
71
+ irb(main):006:0> zuck.user_info
72
+ =>
73
+ {"name"=>"Mark Zuckerberg",
74
+ "first_name"=>"Mark",
75
+ "middle_name"=>nil,
76
+ "last_name"=>"Zuckerberg",
77
+ "alternate_name"=>nil,
78
+ "about"=>"I'm trying to make the world a more open place.",
79
+ "username"=>"zuck",
80
+ "id"=>"4",
81
+ "contact_info"=>{"Facebook"=>"/zuck"},
82
+ "profile_pict"=>
83
+ "https://scontent.fsri1-1.fna.fbcdn.net/v/t39.30808-1/430796318_10115540567190571_8582399341104871939_n.jpg?stp=cp0_dst-jpg_e15_p74x74_q65&_nc_cat=1&ccb=1-7&_nc_sid=6738e8&efg=eyJpIjoiYiJ9&_nc_eui2=AeHQSiRakzAb_b4HMsaXKlBB3zoKFLy_VnHfOgoUvL9WcT8fYXzsEF17SuUlv21wIR24YwfaSCPTzB2o7sbKvnKv&_nc_ohc=VNHCRlcOVWYQ7kNvgHreskn&_nc_ht=scontent.fsri1-1.fna&oh=00_AYAVtyX9DcSjX7XVYPNiJzZe0DTCzrpd6CrkEcDleE7TlQ&oe=668F2433",
84
+ "basic_info"=>
85
+ {"Birthday"=>"May 14, 1984",
86
+ "Gender"=>"Male",
87
+ "Languages"=>"English language and Mandarin Chinese"},
88
+ "education"=>
89
+ [{"name"=>"Harvard University",
90
+ "type"=>"Computer Science and Psychology",
91
+ "study"=>nil,
92
+ "time"=>"August 30, 2002 - April 30, 2004"},
93
+ {"name"=>"Phillips Exeter Academy",
94
+ "type"=>"Classics",
95
+ "study"=>nil,
96
+ "time"=>"Class of 2002"},
97
+ {"name"=>"Ardsley High School",
98
+ "type"=>"High school",
99
+ "study"=>nil,
100
+ "time"=>"September 1998 - June 2000"}],
101
+ "work"=>
102
+ [{"name"=>"Chan Zuckerberg Initiative", "time"=>nil},
103
+ {"name"=>"Meta", "time"=>nil}],
104
+ "living"=>
105
+ {"Current city"=>"Palo Alto, California",
106
+ "Hometown"=>"Dobbs Ferry, New York"},
107
+ "relationship"=>"Married to Priscilla Chan since May 19, 2012",
108
+ "other_name"=>[],
109
+ "family"=>[],
110
+ "year_overviews"=>
111
+ {"2023"=>["Aurelia was born"],
112
+ "2017"=>["August Was Born", "Harvard Degree"],
113
+ "2015"=>
114
+ ["Started New Job at Chan Zuckerberg Initiative", "Max Was Born"],
115
+ "2012"=>["Married Priscilla Chan", "Other Life Event"],
116
+ "2011"=>["Became a Vegetarian"],
117
+ "2010"=>["Started Learning Mandarin Chinese"],
118
+ "2009"=>["Wore a Tie for a Whole Year"],
119
+ "2006"=>["Launched News Feed"],
120
+ "2004"=>
121
+ ["Launched the Wall",
122
+ "Started New Job at Meta",
123
+ "Left Harvard University"],
124
+ "2002"=>
125
+ ["Started School at Harvard University",
126
+ "Graduated from Phillips Exeter Academy"],
127
+ "2000"=>
128
+ ["Started School at Phillips Exeter Academy",
129
+ "Left Ardsley High School"],
130
+ "1998"=>["Started School at Ardsley High School"]},
131
+ "quote"=>
132
+ "\"Fortune favors the bold.\" - Virgil, Aeneid X.284 \"All children are artists. The problem is how to remain an artist once you grow up.\" - Pablo Picasso \"Make things as simple as possible but no simpler.\" - Albert Einstein"}
133
+ ```
134
+
135
+ **Gunakan `me` jika ingin mengekstrak informasi dari akun kamu**\
136
+ **Contoh**:
137
+
138
+ ```ruby
139
+ irb(main):007:0> my_profile = fb.get_profile("me")
140
+ irb(main):008:0> my_profile.name
141
+ => "Rahmat"
142
+ irb(main):009:0> my_profile.id
143
+ => "100053033144051"
144
+ irb(main):010:0> my_profile.username
145
+ => "Anjay.pro098"
146
+ irb(main):011:0> my_profile.user_info
147
+ =>
148
+ {"name"=>"Rahmat",
149
+ "first_name"=>"Rahmat",
150
+ "middle_name"=>nil,
151
+ "last_name"=>nil,
152
+ "alternate_name"=>"Mat",
153
+ "about"=>nil,
154
+ "username"=>"Anjay.pro098",
155
+ "id"=>"100053033144051",
156
+ "contact_info"=>
157
+ {"Facebook"=>"/Anjay.pro098",
158
+ "GitHub"=>"MR-X-Junior",
159
+ "LinkedIn"=>"rahmat-adha"},
160
+ "profile_pict"=>
161
+ "https://scontent.fsri1-1.fna.fbcdn.net/v/t39.30808-1/279908382_524601785984255_7727931677642432211_n.jpg?stp=cp0_dst-jpg_e15_p74x74_q65&_nc_cat=109&ccb=1-7&_nc_sid=6738e8&efg=eyJpIjoiYiJ9&_nc_eui2=AeGk2lfxRnK2L8JQaHWHIjJ6oWFvcSuRApChYW9xK5ECkIOHPDgqB5OCJyHTOX3QEknK9IedKbAdZFqjICCthTjf&_nc_ohc=bJDHLPYQ914Q7kNvgEwvq13&_nc_ht=scontent.fsri1-1.fna&oh=00_AYCe1hLezYj5oKvA-6zjN5Suuu1Hjcq7ARhGx4bAvF5AGA&oe=668EFD8F",
162
+ "basic_info"=>
163
+ {"Birthday"=>"January 13, 2006",
164
+ "Gender"=>"Male",
165
+ "Languages"=>"Bahasa Indonesia"},
166
+ "education"=>[],
167
+ "work"=>[],
168
+ "living"=>{},
169
+ "relationship"=>nil,
170
+ "other_name"=>[{"Nickname"=>"Mat"}, {"Nickname"=>"Met"}],
171
+ "family"=>[],
172
+ "year_overviews"=>{},
173
+ "quote"=>"i know i'm not alone"}
174
+ ```
175
+
176
+ ### Extract Groups
177
+ Method `get_groups` dapat mengekstrak informasi dari groups facebook, Method ini akan mengembalikan object `Groups`
178
+
179
+ ```ruby
180
+ irb(main):010:0> grup = fb.get_groups("1547113062220560")
181
+ irb(main):011:0> grup.name
182
+ => "Python - Indonesian Programmers"
183
+ irb(main):013:0> grup.group_id
184
+ => "1547113062220560"
185
+ irb(main):014:0> grup.total_members
186
+ => 109119
187
+ ```
188
+
189
+ ### Update Profile Picture
190
+ Kamu bisa menggunakan function `UpdateProfilePicture` untuk mengganti poto profile akun Facebook kamu.
191
+
192
+ **Contoh:**
193
+
194
+ ```ruby
195
+ irb(main):004:0> FbRuby::Settings.UpdateProfilePicture(fb, "/sdcard/IMG_20240610_055515.jpg")
196
+ => true
197
+ ```
198
+
199
+ #### Hasilnya
200
+
201
+ ##### Sebelum
202
+
203
+ ![Before Update Profile Picture](https://i.ibb.co.com/SyD2B2C/Screenshot-20240706-214021.jpg)
204
+
205
+ ##### Sesudah
206
+
207
+ ![After Update Profile Picture](https://i.ibb.co.com/94YDVDG/Screenshot-20240706-214839.jpg)
208
+
209
+ ### Update Cover Profile
210
+ Kamu bisa menggunakan function `UpdateCoverPicture` untuk mengganti poto profile akun Facebook kamu.
211
+
212
+ **Contoh:**
213
+
214
+ ```ruby
215
+ irb(main):008:0> FbRuby::Settings.UpdateCoverPicture(fb, "/sdcard/cover.jpg")
216
+ => true
217
+ ```
218
+
219
+ #### Hasilnya
220
+
221
+ ##### Sebelum
222
+
223
+ ![Before Update Cover Picture](https://i.ibb.co.com/94YDVDG/Screenshot-20240706-214839.jpg)
224
+
225
+ ##### Sesudah
226
+
227
+ ![After Update Cover Picture](https://i.ibb.co.com/7QYtV3Q/Screenshot-20240706-220438.jpg)
228
+
229
+
230
+ ### Get Notifications
231
+ Kamu bisa menggunakan method `get_notifications` untuk mendapatkan notifikasi terbaru dari akun Facebook.
232
+
233
+ ```ruby
234
+ irb(main):016:0> fb.get_notifications(limit = 1)
235
+ =>
236
+ [{"message"=>
237
+ "Welcome to Facebook! Tap here to find people you know and add them as friends.",
238
+ "time"=>"46 minutes ago",
239
+ "redirect_url"=>
240
+ "https://mbasic.facebook.com/a/notifications.php?redir=%2Ffriends%2Fcenter%2Frequests%2F%3Feav%3DAfYfmGT4ELN6D-CzMS7ytUaBB88FEN5Mi8CZS3RbN84XsqHCbVEqb0kMBlPPXTNKydk%26paipv%3D0&seennotification=1720272846463938&eav=AfaG83DbRVDKwHTs8u9v8R9xLBlc41faflfaPLdB0LH31q5KueCpTHrgbC30Qo_lEQg&gfid=AQAwsSt-rcLzdWk8sHw&paipv=0&refid=48"}]
241
+ ```
242
+
243
+ ### Get Posts
244
+
245
+ #### User
246
+ Method `get_posts_user`, akan mengumpulkan postingan dan mengekstrak postingan tersebut, method ini akan mengembalikan `Array` yang di dalam nya terdapat sekumpulan object `Posts`
247
+
248
+ ```ruby
249
+ irb(main):004:1* for x in fb.get_posts_user("Anjay.pro098", limit = 2)
250
+ irb(main):005:1* puts ("Author : #{x.author}")
251
+ irb(main):006:1* puts ("Caption: #{x.caption}")
252
+ irb(main):007:1* puts ("Upload Time : #{x.upload_time}\n")
253
+ irb(main):008:0> end
254
+ ```
255
+
256
+ ##### Output
257
+ ```ruby
258
+ Author : Rahmat
259
+ Caption: Hello World 🌍
260
+ Upload Time : May 17, 2021 at 1:15 PM
261
+
262
+ Author : Rahmat
263
+ Caption: 🗿
264
+ Upload Time : September 21, 2021 at 7:09 PM
265
+ ```
266
+
267
+ #### Groups
268
+ Method `get_posts_groups`, akan mengumpulkan postingan dari grup dan mengekstrak postingan tersebut, method ini akan mengembalikan `Array` yang di dalam nya terdapat sekumpulan object `Posts`
269
+
270
+ ```ruby
271
+ for x in fb.get_posts_groups("1547113062220560", limit = 2)
272
+ irb(main):005:1* puts ("Author : #{x.author}")
273
+ irb(main):006:1* puts ("Caption: #{x.caption}")
274
+ irb(main):007:1* puts ("Upload Time : #{x.upload_time}\n")
275
+ irb(main):008:0> end
276
+ ```
277
+
278
+ ##### Output
279
+ ```ruby
280
+ Author : Umar Alvaro
281
+ Captoon: The temperature here does anyone have a source code for identifying the disease of onion plants? 🙏
282
+ Upload Time : July 2 at 5:53 AM
283
+
284
+ Author : Andi Faqih
285
+ Captoon: Info guru yang sudah berpengalaman, kalau web panel yang tidak ada menu daftar dan kontak developernya gaada apakah ada trik untuk masuk ya? Kalau ada mungkin ada yg bisa bantu ada fee nya🙏🙏
286
+ Upload Time : July 2 at 5:53 AM
287
+ ```
288
+
289
+ #### Beranda
290
+ Method `get_home_posts`, akan mengumpulkan postingan dari beranda method ini akan mengembalikan `Array` yang di dalam nya terdapat sekumpulan object `Posts`
291
+
292
+ ```ruby
293
+ irb(main):003:1* for post in fb.get_home_posts(limit = 3)
294
+ irb(main):004:1* puts ("Author : #{post.author}")
295
+ irb(main):005:1* puts ("Caption: #{post.caption}")
296
+ irb(main):006:1* puts ("Upload Time : #{post.upload_time}\n\n")
297
+ irb(main):007:0> end
298
+ ```
299
+
300
+ ##### Output
301
+ ```ruby
302
+ Author : Satoshi Jinomoto
303
+ Caption: Inikah namanya jepe.
304
+ Upload Time : July 4 at 8:54 AM
305
+
306
+ Author : Zanna Na
307
+ Caption: Foto terbaik sepanjang masa ❤️❤️❤️📷
308
+ Upload Time : July 1 at 5:35 PM
309
+
310
+ Author : Cewek Dayak
311
+ Caption: Palangkaraya
312
+ Upload Time : July 6 at 12:01 PM
313
+ ```
314
+
315
+ ### Post Parser
316
+
317
+ Method `post_parser` di gunakan untuk mengekstrak postingan, method ini akan mengembalikan object `Posts`
318
+
319
+ ```ruby
320
+ irb(main):014:0> post = fb.post_parser("https://www.facebook.com/100053033144051/posts/pfbid02kW92DAKmVBu2tZ9eiBGCPqGdrKst9oYjN8ZE2XzFpYsdQdqwsjGEWYgx1adCGTBbl/?app=fbl")
321
+ irb(main):015:0> post.author
322
+ => "Rahmat"
323
+ irb(main):016:0> post.author_url
324
+ => #<URI::HTTPS https://mbasic.facebook.com/Anjay.pro098?eav=AfZMKVpAbkXW4Nxs8ZmPLIBBiWZQT8Uk-FzmF14eifN0CJqv7-KdWMTXLoN7qe6I4sw&__tn__=C-R&paipv=0>
325
+ irb(main):017:0> post.caption
326
+ => "Hello World 🌍"
327
+ irb(main):018:0> post.post_file
328
+ =>
329
+ {"image"=>
330
+ [{"link"=>
331
+ "https://scontent.fsri1-1.fna.fbcdn.net/v/t39.30808-6/241434705_371774571266978_6844800659294160676_n.jpg?stp=cp0_dst-jpg_e15_p75x225_q65&_nc_cat=104&ccb=1-7&_nc_sid=e21142&efg=eyJpIjoiYiJ9&_nc_eui2=AeFMDu_ViT5NEX3O-d6gfn849HuYP8xaWmP0e5g_zFpaY3m1XYFSpHejMH0idJ8-Vsex6_8oqLj0Q8mB68nL9veo&_nc_ohc=imu3pxOh-RQQ7kNvgGOLueJ&tn=DX4SAjJgwj_VJcSD&_nc_zt=23&_nc_ht=scontent.fsri1-1.fna&oh=00_AYAy8jdcLSeJGLgWAjUOQREaTgjhcYNuMOEkGQZF-qottg&oe=668FA5CF",
332
+ "id"=>"241434705_371774571266978_6844800659294160676",
333
+ "preview"=>
334
+ "https://scontent.fsri1-1.fna.fbcdn.net/v/t39.30808-6/241434705_371774571266978_6844800659294160676_n.jpg?stp=cp0_dst-jpg_e15_q65_s240x240&_nc_cat=104&ccb=1-7&_nc_sid=e21142&efg=eyJpIjoiYiJ9&_nc_eui2=AeFMDu_ViT5NEX3O-d6gfn849HuYP8xaWmP0e5g_zFpaY3m1XYFSpHejMH0idJ8-Vsex6_8oqLj0Q8mB68nL9veo&_nc_ohc=imu3pxOh-RQQ7kNvgGOLueJ&tn=DX4SAjJgwj_VJcSD&_nc_zt=23&_nc_ht=scontent.fsri1-1.fna&oh=00_AYCmr9nKE8jjhBi_UlnLe6vg6-KKBw92JawTVvXeTnAW5g&oe=668FA5CF",
335
+ "content-type"=>"image"}],
336
+ "video"=>[]}
337
+ irb(main):019:0> post.get_react()
338
+ =>
339
+ {"like"=>5847,
340
+ "love"=>975,
341
+ "care"=>9,
342
+ "haha"=>7,
343
+ "wow"=>884,
344
+ "sad"=>0,
345
+ "angry"=>1}
346
+ ```
347
+
348
+ #### Mengirim Komentar
349
+
350
+ Kamu bisa menggunakan method `send_comment` untuk mengirim komentar.
351
+ Method `send_comment` akan mengembalikan `true` Jika berhasil mengirim komentar.
352
+
353
+ **Contoh:**
354
+
355
+ ```ruby
356
+ irb(main):020:0> post.send_comment("Hallo Om #{post.author}, komentar ini di tulis menggunakan library FbRuby\nBaris 3\nBaris 4")
357
+ => true
358
+ ```
359
+
360
+ ##### Hasilnya
361
+ **Liat Komentar paling bawah**
362
+
363
+ ![Contoh cara mengirim komentar](https://i.ibb.co.com/RYyYLJL/IMG-20240707-081752.jpg)
364
+
365
+ Untuk menambahkan foto pada komentar, kamu bisa menggunakan argument `file`
366
+
367
+ **Contoh:**
368
+
369
+ ```ruby
370
+ irb(main):004:0> post.send_comment("Komentar ini tidak di sertai dengan foto")
371
+ => true
372
+ irb(main):005:0> post.send_comment("Komentar ini di sertai dengan foto", file = "/sdcard/cover.jpg")
373
+ => true
374
+ ```
375
+
376
+ ##### Hasilnya
377
+
378
+ ![Contoh cara mengirim komentar dengan foto](https://i.ibb.co.com/mtR4Nn2/IMG-20240707-091553.jpg)
379
+
380
+ #### Memberikan react pada postingan
381
+
382
+ Kamu bisa menggunakan method `send_react` untuk memberikan react pada postingan.
383
+ Method ini akan mengembalikan `true` jika berhasil memberikan react pada postingan.
384
+
385
+ ```ruby
386
+ irb(main):006:1* post.send_react(react_type)
387
+ => true
388
+ ```
389
+
390
+ Terdapat 7 React Type, di antaranya :
391
+ - Like
392
+ - Love
393
+ - Care
394
+ - Haha
395
+ - Wow
396
+ - Sad
397
+ - Angry
398
+
399
+ **Contoh Cara mengirim react:**
400
+ ```ruby
401
+ irb(main):007:0> post.send_react("wow")
402
+ => true
403
+ ```
404
+
405
+ ##### Hasilnya
406
+ ![Contoh cara memberikan react ke postingan](https://i.ibb.co.com/5xSrzZF/IMG-20240707-092034.jpg)
407
+
408
+ ##### Membagikan Postingan
409
+ Kamu bisa menggunakan method `share_post` untuk membagikan postingan seseorang ke akun Facebook kamu.
410
+
411
+ **Contoh (1):**
412
+
413
+ ```ruby
414
+ irb(main):009:0> post.share_post()
415
+ => true
416
+ ```
417
+
418
+ ##### Hasilnya
419
+
420
+ ![Contoh cara membagikan postingan](https://i.ibb.co.com/j54XfGL/Screenshot-2024-0707-093043.png)
421
+
422
+ **Contoh (2):**
423
+
424
+ Kamu juga bisa menambahkan `message`,`location` dan `feeling` pada postingan yang di bagikan.
425
+
426
+ ```ruby
427
+ irb(main):011:0> post.share_post("Postingan ini di bagikan menggunakan library FbRuby:)",location = "Samarinda", feeling = "Happy")
428
+ => true
429
+ ```
430
+
431
+ ##### Hasilnya
432
+ ![Contoh cara membagikan postingan dengan message,location, dan feeling](https://i.ibb.co.com/2NdxF7y/Screenshot-2024-0707-093804.png)
433
+
434
+ ### Messenger
435
+
436
+ object `Messenger` bisa di gunakan untuk mengirim/menerima chat.\
437
+ Terdapat 2 cara untuk membuat Object `Messenger`
438
+
439
+ **Cara 1**
440
+
441
+ ```ruby
442
+ irb(main):014:0> msg = fb.messenger
443
+ => Facebook Messenger
444
+ ```
445
+ **Cara 2**
446
+
447
+ ```ruby
448
+ irb(main):013:0> msg = FbRuby::Messenger.new(request_session: login.sessions)
449
+ ```
450
+
451
+ #### Mendapatkan Pesan Baru
452
+ Method `get_new_message` bisa di gunakan untuk mendapatkan pesan baru:)
453
+
454
+ ```ruby
455
+ irb(main):023:1* for chat in msg.get_new_message(limit = 2)
456
+ irb(main):024:1* puts ("Nama : #{chat['name']}")
457
+ irb(main):025:1* puts ("Id Akun : #{chat['id']}")
458
+ irb(main):026:1* puts ("Last Chat : #{chat['last_chat']}")
459
+ irb(main):027:1* puts ("Time : #{chat['time']}\n\n")
460
+ irb(main):028:0> end
461
+ ```
462
+
463
+ ##### Output
464
+
465
+ ```ruby
466
+ Nama : Rahmat
467
+ Id Akun : 100053033144051
468
+ Last Chat : Hallo Kak Rahmat:)
469
+ Time : 11 menit lalu
470
+
471
+ Nama : Mark Zuckerberg
472
+ Id Akun : 4
473
+ Last Chat : Ban Akun aku dong om
474
+ Time : 4 Mar
475
+ ```
476
+
477
+ Method `get_new_chat` juga bisa di gunakan untuk mendapatkan pesan baru, tetapi method ini berbeda dengan method `get_new_message`
478
+
479
+ ```ruby
480
+ irb(main):021:0> msg.get_new_message(limit = 3)
481
+ =>
482
+ [{"name"=>"Raven Rivera",
483
+ "id"=>"61561488837481", "last_chat"=>
484
+ "You can now call each other and see information like Active Status and when you've read messages.",
485
+ "chat_url"=>
486
+ "https://mbasic.facebook.com/messages/read/?tid=cid.c.61561488837481%3A100086839940375&surface_hierarchy=unknown&eav=AfaVL0CWoprvEWrDytJxVPgWYSKf1qPc2R6mwIaxOEKCUd9jb1Rtuc3C3R7ioJnbaXE&paipv=0&refid=11#fua",
487
+ "time"=>"4 minutes ago"}, {"name"=>"Tasiah",
488
+ "id"=>"61561488837481",
489
+ "last_chat"=>"tc",
490
+ "chat_url"=>
491
+ "https://mbasic.facebook.com/messages/read/?tid=cid.c.61561488837481%3A100088905378115&surface_hierarchy=unknown&eav=AfZPigYLcgSOeKbgGTWOEdODEj_xSyRZ6K1pcyLojIhbqE80bXBgxX8EWSsjHRIXirw&paipv=0&refid=11#fua",
492
+ "time"=>"8 minutes ago"},
493
+ {"name"=>"Welda Ningsih", "id"=>"61561488837481",
494
+ "last_chat"=>"You are now connected on Messenger",
495
+ "chat_url"=>
496
+ "https://mbasic.facebook.com/messages/read/?tid=cid.c.61561488837481%3A100000230663103&surface_hierarchy=unknown&eav=Afa-6wgOtq4fDJUYW1Srviky-fA7LIUQys3VE12JN48dOPiYzrqrKPI5JjZnTFyQWts&paipv=0&refid=11#fua",
497
+ "time"=>"Jun 27"}]
498
+ irb(main):022:0> msg.get_new_chat(limit = 3)
499
+ =>
500
+ [Facebook Chats : name="Tasiah" id="100088905378115" chat_id="61561488837481:100088905378115" chat_type="user",
501
+ Facebook Chats : name="Welda Ningsih" id="100000230663103" chat_id="61561488837481:100000230663103" chat_type="user",
502
+ Facebook Chats : name="Raven Rivera" id="100086839940375" chat_id="61561488837481:100086839940375" chat_type="user"]
503
+ ```
504
+
505
+ Dari code di atas kita sudah bisa menyimpulkan perbedaan method `get_new_message` dan method `get_new_chat`.
506
+
507
+ Method `get_new_message` akan mengembalikan `Array` yang di dalam nya terdapat sekumpulan `Hash`, sedangkan method `get_new_chat` akan mengembalikan `Array` yang di dalam nya terdapat sekumpulan object `Chats`.
508
+
509
+ #### Mengirim Pesan
510
+
511
+ Kamu bisa menggunakan method `new_chat` untuk mengirim pesan, method ini akan mengembalikan object `Chats`
512
+
513
+ ```ruby
514
+ irb(main):024:0> chat = msg.new_chat("zuck")
515
+ => Facebook Chats : name="Mark Zuckerberg" id="4" chat_id=nil cha...
516
+ irb(main):025:0> chat.send_text('Assalamualaikum')
517
+ => true
518
+ irb(main):026:0> chat.send_text("Hallo Om #{chat.name}")
519
+ => true
520
+ irb(main):027:0> chat.send_text("Apa kabar?")
521
+ => true
522
+ irb(main):028:0> chat.send_text("Pesan ini di kirim menggunakan library FbRuby\n\nTerima kasih sudah membaca chat saya")
523
+ => true
524
+
525
+ ```
526
+
527
+ ##### Hasilnya
528
+ ![Contoh Cara Mengirim Pesan](https://i.ibb.co.com/CvLSvYX/Screenshot-20240707-122431.jpg)
529
+
530
+ Kamu bisa menggunakan method `send_images` untuk mengirim chat dengan foto.
531
+
532
+ **Contoh:**
533
+
534
+ ```ruby
535
+ irb(main):029:0> mat = msg.new_chat("Anjay.pro098")
536
+ => Facebook Chats : name="Rahmat" id="100053033144051" chat_id=ni...
537
+ irb(main):030:0> mat.send_text("Hallo kak #{mat.name}")
538
+ => true
539
+ irb(main):031:0> mat.send_text("Pesan ini di kirim menggunakan library FbRuby")
540
+ => true
541
+ irb(main):032:0> mat.send_images(file = "/sdcard/cover.jpg","Tes")
542
+ => true
543
+ ```
544
+
545
+ ##### Hasilnya
546
+ ![Contoh Cara mengirim chat dengan foto](https://i.ibb.co.com/stFHy75/Screenshot-20240707-183417.jpg)
547
+
548
+ Untuk Mengirim foto dengan jumblah lebih dari 1 file, gunakan Array pada parameter `file`
549
+
550
+ **Contoh:**
551
+
552
+ ```ruby
553
+ mat.send_images(file = ["/sdcard/1.jpg","/sdcard/2.jpg","/sdcard/3.jpg"])
554
+ => true
555
+ ```
556
+
557
+ ##### Hasilnya
558
+ ![Contoh cara kirim chat dengan lebih dari 1 foto](https://i.ibb.co.com/6s9sqtL/IMG-20240707-125130.jpg)
559
+
560
+ Untuk Mengirim Stiker kamu bisa menggunakan method `send_sticker`, method ini akan mengembalikan `true` jika berhasil mengirim stiker
561
+
562
+ **Secara bawaan library FbRuby mempunyai beberapa stiker:**
563
+
564
+ | Nama Stiker | ID Stiker |
565
+ |--------------------------------|-------------------|
566
+ | smile | 529233727538989 |
567
+ | crying | 529233744205654 |
568
+ | angry | 529233764205652 |
569
+ | heart_eyes | 529233777538984 |
570
+ | happy_heart | 529233794205649 |
571
+ | laugh | 529233810872314 |
572
+ | fearful | 529233834205645 |
573
+ | sleeping | 529233847538977 |
574
+ | grimacing | 529233954205633 |
575
+ | creazy_face | 529233967538965 |
576
+ | smiling_face_with_sunglasses | 529233864205642 |
577
+ | face_with_spiral_eyes | 529233884205640 |
578
+ | face_blowing_a_kiss | 529233917538970 |
579
+ | face_vomiting | 529233937538968 |
580
+ | face_screaming | 529233980872297 |
581
+
582
+ **Contoh:**
583
+
584
+ ```ruby
585
+ irb(main):007:0> mat.send_sticker("smile")
586
+ => true
587
+ irb(main):008:0> mat.send_sticker("crying")
588
+ => true
589
+ ```
590
+
591
+ ##### Hasilnya
592
+ ![Contoh cara mengirim stiker](https://i.ibb.co.com/VDfpc9q/Screenshot-2024-0708-011301.png)
593
+
594
+ ## Membuat Postingan
595
+
596
+ ### Akun Pengguna
597
+
598
+ method `create_timeline_user` bisa di gunakan untuk membuat postingan di akun pengguna, method ini akan mengembalikan `true` jika berhasil membuat postingan.
599
+
600
+ #### Membuat Postingan (Hanya Caption)
601
+
602
+ ```ruby
603
+ irb(main):007:0> fb.create_timeline_user(target = "me", message = "Hallo Dunia^^")
604
+ => true
605
+ ```
606
+
607
+ ##### Hasilnya
608
+ ![Membuat Postingan (Hanya Caption)](https://i.ibb.co.com/WVs9p35/Screenshot-2024-0707-171710.png)
609
+
610
+ #### Membuat Postingan di akun teman
611
+ Untuk membuat postingan di akun teman, kamu hanya perlu mengganti argumen dari parameter `target` menjadi id atau username teman kamu:)
612
+
613
+ **Contoh:**
614
+
615
+ ```python
616
+ irb(main):008:0> fb.create_timeline_user(target = "Id atau username akun teman", message = "Postingan ini di buat menggunakan library FbRuby\n\nHehe")
617
+ => true
618
+ ```
619
+
620
+ ##### Hasilnya
621
+ ![Membuat Postingan (Hanya caption) di akun teman Facebook](https://i.ibb.co.com/hm70cYd/Screenshot-2024-0707-172114.png)
622
+
623
+ #### Membuat Postingan (Tag Teman)
624
+ Untuk menandai teman pada postingan, kamu bisa menggunakan argumen `users_with`.
625
+
626
+ ```ruby
627
+ irb(main):003:0> fb.create_timeline_user(target = "me", message = "Postingan ini di buat menggunakan library FbRuby", users_with: "id akun facebook teman")
628
+ => true
629
+ ```
630
+
631
+ ##### Hasilnya
632
+ ![Membuat Postingan (Tag Teman)](https://i.ibb.co.com/Sm3Gbjr/Screenshot-2024-0707-182642.png)
633
+
634
+ #### Membuat Postingan (Dengan Foto)
635
+ Kamu bisa menggunakan argumen `file` untuk menambahkan foto pada postingan:)
636
+
637
+ ```ruby
638
+ irb(main):005:0> fb.create_timeline_user(target = "me", message= "Postingan ini di sertai dengan foto", file: "/sdcard/IMG_20240610_055515.jpg")
639
+ => true
640
+ ```
641
+
642
+ ##### Hasilnya
643
+ ![Membuat Postingan (Dengan Foto)](https://i.ibb.co.com/GngvyKY/Screenshot-20240707-190241.jpg)
644
+
645
+ Oh iya, kamu bisa menggunakan argumen `filter_type` untuk mengatur filter pada foto yang akan kamu upload.
646
+
647
+ ```ruby
648
+ irb(main):007:0> fb.create_timeline_user(target = "me", message= "Postingan ini di sertai dengan foto", file: "/sdcard/IMG_20240610_055515.jpg", filter_type: '1')
649
+ => true
650
+ ```
651
+
652
+ Dan Ini hasil nya:
653
+
654
+ ![Mengatur filter pada foto](https://i.ibb.co.com/vZjMgTK/Screenshot-20240707-190500.jpg)
655
+
656
+ **Ada beberapa tipe filter yang bisa kamu coba, di antaranya:**
657
+ - Tanpa Filter = -1
658
+ - Hitam Putih = 1
659
+ - Retro = 2
660
+
661
+ #### Membuat Postingan (Dengan Lokasi)
662
+ Kamu bisa menggunakan argumen `location` untuk menambahkan lokasi pada postingan
663
+
664
+ ```ruby
665
+ irb(main):003:0> fb.create_timeline_user(target = "me", message= "Hallo", location: "Samarinda")
666
+ => true
667
+ ```
668
+
669
+ ##### Hasilnya
670
+ ![Membuat Postingan (Dengan Lokasi)](https://i.ibb.co.com/sPK8x2n/Screenshot-2024-0707-192621.png)
671
+
672
+ #### Membuat Postingan (Dengan Feeling)
673
+ Kamu bisa menggunakan argumen `feeling` untuk menambahkan feeling pada postingan
674
+
675
+ ```ruby
676
+ irb(main):004:0> fb.create_timeline_user(target = "me", message= "Hallo", location: "Samarinda", feeling: "Happy")
677
+ => true
678
+ ```
679
+
680
+ ##### Hasilnya
681
+ ![Membuat Postingan (Dengan Feeling)](https://i.ibb.co.com/r2s6ygk/Screenshot-2024-0707-192926.png)
682
+
683
+ ### Grup Facebook
684
+ method `create_timeline_groups` bisa di gunakan untuk membuat postingan di grup facebook, method ini akan mengembalikan `true` jika berhasil membuat postingan.\
685
+ Untuk cara penggunaan method ini sama seperti [create_timeline_user](###Akun-Pengguna)
686
+
687
+ **Contoh:**
688
+
689
+ ```ruby
690
+ irb(main):006:0> fb.create_timeline_groups(target = "2127722334228965", message = "Tes", file: "/sdcard/cover.jpg", feeling: "Happy", users_with: "61562065351749")
691
+ => true
692
+ ```
693
+
694
+ ##### Hasilnya
695
+ ![Membuat postingan di grup](https://i.ibb.co.com/x359D32/Screenshot-20240707-200207.jpg)
696
+
697
+ ### Temporary Mail
698
+
699
+ Kamu bisa menggunakan class `TempMail` untuk membuat email sementara
700
+
701
+ #### Membuat Email
702
+
703
+ **Cara membuat email sementara:**
704
+ ```ruby
705
+ irb(main):007:0> tmpmail = FbRuby::TempMail.new
706
+ => CryptoGmail : prefix=fNtWJAbFUKQB domain=chitthi.in emai...
707
+ irb(main):008:0> tmpmail.email
708
+ => "fNtWJAbFUKQB@chitthi.in"
709
+ ```
710
+
711
+ Sangat mudah bukan?
712
+
713
+ Untuk prefix dan domain email nya bisa di ganti lho
714
+
715
+ **Cara ganti prefix dan domain email:**
716
+ ```ruby
717
+ irb(main):012:0> tmpmail = FbRuby::TempMail.new(prefix = "rahmat_adha072", domain = "any.pink")
718
+ => CryptoGmail : prefix=rahmat_adha072 domain=any.pink emai...
719
+ irb(main):013:0> tmpmail.email
720
+ => "rahmat_adha072@any.pink"
721
+ irb(main):014:0>
722
+ ```
723
+
724
+ **Daftar domain email yang di dukung:**
725
+ - mailto.plus
726
+ - fexpost.com
727
+ - fexbox.org
728
+ - mailbox.in.ua
729
+ - rover.info
730
+ - chitthi.in
731
+ - fextemp.com
732
+ - any.pink
733
+ - merepost.com
734
+
735
+ *SELAIN DARI DOMAIN DI ATAS TIDAK AKAN BISA!*
736
+
737
+ #### Mendapatkan pesan email
738
+ Untuk mendapatkan pesan email yang masuk, kamu bisa menggunakan method `get_new_message`
739
+
740
+ **Contoh:**
741
+ ```ruby
742
+ irb(main):022:0> tmpmail.get_new_message(limit = 1)
743
+ =>
744
+ {"count"=>1,
745
+ "first_id"=>2294534389,
746
+ "last_id"=>2294534389,
747
+ "limit"=>1,
748
+ "mail_list"=>
749
+ [{"attachment_count"=>0,
750
+ "first_attachment_name"=>"",
751
+ "from_mail"=>"registration@facebookmail.com",
752
+ "from_name"=>"Facebook",
753
+ "is_new"=>true,
754
+ "mail_id"=>2294534389,
755
+ "subject"=>"81999 is your Facebook confirmation code",
756
+ "time"=>"2024-07-07 16:14:21"}],
757
+ "more"=>false,
758
+ "result"=>true}
759
+ ```
760
+
761
+ #### Lihat Isi Email
762
+ Untuk melihat pesan lengkap dari email yang masuk, kamu bisa menggunakan method `view_mail`\
763
+ method ini memerlukan argumen `mail_id`, untuk `mail_id` bisa kamu dapatkan dari method [get_new_message](#Mendapatkan-pesan-email)
764
+
765
+ **Contoh:**
766
+ ```ruby
767
+ irb(main):024:0> tmpmail.view_mail("2294534389")
768
+ =>
769
+ {"attachments"=>[],
770
+ "date"=>"Sun, 7 Jul 2024 06:14:08 -0700",
771
+ "from"=>"\"Facebook\" <registration@facebookmail.com>",
772
+ "from_is_local"=>false,
773
+ "from_mail"=>"registration@facebookmail.com",
774
+ "from_name"=>"Facebook",
775
+ "html"=>
776
+ "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional //EN\"><html><head><title>Facebook</title><meta http-equiv=\"Content-Type\" content=\"text/html; charset=utf-8\" /><style nonce=\"sb7Yw3H4\">@media all and (max-width: 480px){*[class].ib_t{min-width:100% !important}*[class].ib_row{display:block !important}*[class].ib_ext{display:block !important;padding:10px 0 5px 0;vertical-align:top !important;width:100% !important}*[class].ib_img,*[class].ib_mid{vertical-align:top !important}*[class].mb_blk{display:block !important;padding-bottom:10px;width:100% !important}*[class].mb_hide{display:none !important}*[class].mb_inl{display:inline !important}*[class].d_mb_flex{display:block !important}}.d_mb_show{display:none}.d_mb_flex{display:flex}@media only screen and (max-device-width: 480px){.d_mb_hide{display:none !important}.d_mb_show{display:block !important}.d_mb_flex{display:block !important}}.mb_text h1,.mb_text h2,.mb_text h3,.mb_text h4,.mb_text h5,.mb_text h6{line-height:normal}.mb_work_text h1{font-size:18px;line-height:normal;margin-top:4px}.mb_work_text h2,.mb_work_text h3{font-size:16px;line-height:normal;margin-top:4px}.mb_work_text h4,.mb_work_text h5,.mb_work_text h6{font-size:14px;line-height:normal}.mb_work_text a{color:#1270e9}.mb_work_text p{margin-top:4px}</style></head><table border=\"0\" width=\"100%\" cellspacing=\"0\" cellpadding=\"0\" style=\"border-collapse:collapse;\"><tr><td width=\"100%\" align=\"center\" style=\"\"><table border=\"0\" cellspacing=\"0\" cellpadding=\"0\" align=\"center\" style=\"border-collapse:collapse;\"><tr><td width=\"960\" align=\"center\" style=\"\"><body style=\"max-width:480px;margin:0 auto;\" dir=\"ltr\" bgcolor=\"#ffffff\"><table border=\"0\" cellspacing=\"0\" cellpadding=\"0\" align=\"center\" id=\"email_table\" style=\"border-collapse:collapse;max-width:480px;margin:0 auto;\"><tr><td id=\"email_content\" style=\"font-family:Helvetica Neue,Helvetica,Lucida Grande,tahoma,verdana,arial,sans-serif;background:#ffffff;\"><table border=\"0\" width=\"100%\" cellspacing=\"0\" cellpadding=\"0\" style=\"border-collapse:collapse;\"><tr style=\"\"><td height=\"20\" style=\"line-height:20px;\" colspan=\"3\">&nbsp;</td></tr><tr><td height=\"1\" colspan=\"3\" style=\"line-height:1px;\"><span style=\"color:#FFFFFF;font-size:1px;opacity:0;\">              Hi,   Someone tried to create a Facebook account with this email address. If it was you, please confirm your account.  </span></td></tr><tr><td width=\"15\" style=\"display:block;width:15px;\">&nbsp;&nbsp;&nbsp;</td><td style=\"\"><table border=\"0\" width=\"100%\" cellspacing=\"0\" cellpadding=\"0\" style=\"border-collapse:collapse;\"><tr style=\"\"><td height=\"28\" style=\"line-height:28px;\">&nbsp;</td></tr><tr><td style=\"\"><table border=\"0\" width=\"100%\" cellspacing=\"0\" cellpadding=\"0\" style=\"border-collapse:collapse;\"><tr style=\"\"><td height=\"15\" style=\"line-height:15px;\" colspan=\"3\">&nbsp;</td></tr><tr><td width=\"32\" align=\"left\" valign=\"middle\" style=\"height:32;line-height:0px;\"><a href=\"https://www.facebook.com/\" style=\"color:#1b74e4;text-decoration:none;\"><img width=\"32\" src=\"https://static.xx.fbcdn.net/rsrc.php/v3/yS/r/ZirYDPWh0YD.png\" height=\"32\" style=\"border:0;\" /></a></td><td width=\"15\" style=\"display:block;width:15px;\">&nbsp;&nbsp;&nbsp;</td><td width=\"100%\" style=\"\"><a href=\"https://www.facebook.com/\" style=\"color:#1877f2;text-decoration:none;font-family:Helvetica Neue,Helvetica,Lucida Grande,tahoma,verdana,arial,sans-serif;font-size:19px;line-height:32px;\"></a></td></tr><tr style=\"border-bottom:solid 1px #e5e5e5;\"><td height=\"15\" style=\"line-height:15px;\" colspan=\"3\">&nbsp;</td></tr></table></td></tr><tr style=\"\"><td height=\"20\" style=\"line-height:20px;\">&nbsp;</td></tr><tr><td style=\"\"><tr style=\"\"><td height=\"20\" style=\"line-height:20px;\">&nbsp;</td></tr></td></tr><tr><td style=\"\"><span class=\"mb_text\" style=\"font-family:Helvetica Neue,Helvetica,Lucida Grande,tahoma,verdana,arial,sans-serif;font-size:16px;line-height:21px;color:#141823;\">Hi,</span></td></tr><tr style=\"\"><td height=\"20\" style=\"line-height:20px;\">&nbsp;</td></tr><tr><td style=\"\"><span class=\"mb_text\" style=\"font-family:Helvetica Neue,Helvetica,Lucida Grande,tahoma,verdana,arial,sans-serif;font-size:16px;line-height:21px;color:#141823;\">Someone tried to create a Facebook account with this email address. If it was you, please confirm your account.</span></td></tr><tr style=\"\"><td height=\"20\" style=\"line-height:20px;\">&nbsp;</td></tr></table></td><td width=\"15\" style=\"display:block;width:15px;\">&nbsp;&nbsp;&nbsp;</td></tr><tr><td width=\"15\" style=\"display:block;width:15px;\">&nbsp;&nbsp;&nbsp;</td><td style=\"\"><table border=\"0\" width=\"100%\" cellspacing=\"0\" cellpadding=\"0\" style=\"border-collapse:collapse;\"><tr style=\"\"><td height=\"0\" style=\"line-height:0px;\">&nbsp;</td></tr><tr><td align=\"middle\" style=\"\"><a href=\"https://www.facebook.com/n/?confirmemail.php&amp;e=rahmat_adha072%40any.pink&amp;c=98675&amp;cuid=AYglLuv8m8jcc_Qx0LGj-qvQUVlVdgpG4CtwrR7Z9WmL2Z_b2tYvSUDCSmRbOMz30LGiJ3P3eUbTzM0gTyjT4YBmQ-jtmIOSL1aVbVj2FLbWI05vNeJTS2Wz5OZnuu6iJtI&amp;aref=1720358048096581&amp;medium=email&amp;mid=61ca7c8c1de73G37fd8391b1dcG61ca81257e145G3c2&amp;bcode=2.1720358048.AbzarNaspfTvMqW8IAE&amp;n_m=rahmat_adha072%40any.pink\" style=\"color:#1b74e4;text-decoration:none;\"><table border=\"0\" width=\"100%\" cellspacing=\"0\" cellpadding=\"0\" style=\"border-collapse:collapse;\"><tr><td style=\"border-collapse:collapse;border-radius:6px;text-align:center;display:block;background:#1877f2;padding:8px 20px 10px 20px;\"><a href=\"https://www.facebook.com/n/?confirmemail.php&amp;e=rahmat_adha072%40any.pink&amp;c=98675&amp;cuid=AYglLuv8m8jcc_Qx0LGj-qvQUVlVdgpG4CtwrR7Z9WmL2Z_b2tYvSUDCSmRbOMz30LGiJ3P3eUbTzM0gTyjT4YBmQ-jtmIOSL1aVbVj2FLbWI05vNeJTS2Wz5OZnuu6iJtI&amp;aref=1720358048096581&amp;medium=email&amp;mid=61ca7c8c1de73G37fd8391b1dcG61ca81257e145G3c2&amp;bcode=2.1720358048.AbzarNaspfTvMqW8IAE&amp;n_m=rahmat_adha072%40any.pink\" style=\"color:#1b74e4;text-decoration:none;display:block;\"><center><font size=\"4\"><span style=\"font-family:Helvetica Neue,Helvetica,Lucida Grande,tahoma,verdana,arial,sans-serif;white-space:nowrap;font-weight:bold;vertical-align:middle;color:#FFFFFF;text-shadow:none;font-weight:500;font-family:Roboto-Medium,Roboto,-apple-system,BlinkMacSystemFont,Helvetica Neue,Helvetica,Lucida Grande,tahoma,verdana,arial,sans-serif;font-size:18px;line-height:18px;\">Confirm&nbsp;your&nbsp;account</span></font></center></a></td></tr></table></a></td></tr><tr style=\"\"><td height=\"20\" style=\"line-height:20px;\">&nbsp;</td></tr><tr style=\"\"><td height=\"10\" style=\"line-height:10px;\">&nbsp;</td></tr></table></td><td width=\"15\" style=\"display:block;width:15px;\">&nbsp;&nbsp;&nbsp;</td></tr><tr><td width=\"15\" style=\"display:block;width:15px;\">&nbsp;&nbsp;&nbsp;</td><td style=\"\"><table border=\"0\" width=\"100%\" cellspacing=\"0\" cellpadding=\"0\" style=\"border-collapse:collapse;\"><tr><td style=\"\"><tr style=\"\"><td height=\"5\" style=\"line-height:5px;\">&nbsp;</td></tr></td></tr><tr style=\"\"><td height=\"10\" style=\"line-height:10px;\">&nbsp;</td></tr><tr><td style=\"\"><span class=\"mb_text\" style=\"font-family:Helvetica Neue,Helvetica,Lucida Grande,tahoma,verdana,arial,sans-serif;font-size:16px;line-height:21px;color:#141823;\">You may be asked to enter this confirmation code:</span></td></tr><tr style=\"\"><td height=\"10\" style=\"line-height:10px;\">&nbsp;</td></tr><tr><td style=\"\"><span class=\"mb_text\" style=\"font-family:Roboto-Medium,Roboto,-apple-system,BlinkMacSystemFont,Helvetica Neue,Helvetica,Lucida Grande,tahoma,verdana,arial,sans-serif;font-size:17px;line-height:21px;font-weight:500;color:#050505;\"><center>81999</center></span></td></tr><tr style=\"\"><td height=\"10\" style=\"line-height:10px;\">&nbsp;</td></tr><tr><td style=\"\"><tr style=\"\"><td height=\"35\" style=\"line-height:35px;\">&nbsp;</td></tr></td></tr><tr style=\"\"><td height=\"10\" style=\"line-height:10px;\">&nbsp;</td></tr></table></td><td width=\"15\" style=\"display:block;width:15px;\">&nbsp;&nbsp;&nbsp;</td></tr><tr><td width=\"15\" style=\"display:block;width:15px;\">&nbsp;&nbsp;&nbsp;</td><td style=\"\"><table border=\"0\" width=\"100%\" cellspacing=\"0\" cellpadding=\"0\" align=\"left\" style=\"border-collapse:collapse;\"><tr style=\"border-top:solid 1px #e5e5e5;\"><td height=\"19\" style=\"line-height:19px;\">&nbsp;</td></tr><tr><td style=\"font-family:Roboto-Regular,Roboto,-apple-system,BlinkMacSystemFont,Helvetica Neue,Helvetica,Lucida Grande,tahoma,verdana,arial,sans-serif;font-size:11px;color:#8A8D91;line-height:16px;font-weight:400;\"><table border=\"0\" cellspacing=\"0\" cellpadding=\"0\" style=\"border-collapse:collapse;color:#8A8D91;text-align:center;font-size:12px;font-weight:400;font-family:Roboto-Regular,Roboto,-apple-system,BlinkMacSystemFont,Helvetica Neue,Helvetica,Lucida Grande,tahoma,verdana,arial,sans-serif;\"><tr><td align=\"center\" style=\"font-size:12px;font-family:Roboto-Regular,Roboto,-apple-system,BlinkMacSystemFont,Helvetica Neue,Helvetica,Lucida Grande,tahoma,verdana,arial,sans-serif;color:#8A8D91;text-align:center;font-weight:400;padding-bottom:6px;\">from</td></tr><tr><td align=\"center\" style=\"font-size:12px;font-family:Roboto-Regular,Roboto,-apple-system,BlinkMacSystemFont,Helvetica Neue,Helvetica,Lucida Grande,tahoma,verdana,arial,sans-serif;color:#8A8D91;text-align:center;font-weight:400;padding-top:6px;padding-bottom:6px;\"><img width=\"74\" alt=\"Meta\" height=\"22\" src=\"https://facebook.com/images/email/meta_logo.png\" style=\"border:0;\" /></td></tr><tr><td align=\"center\" style=\"font-size:12px;font-family:Roboto-Regular,Roboto,-apple-system,BlinkMacSystemFont,Helvetica Neue,Helvetica,Lucida Grande,tahoma,verdana,arial,sans-serif;color:#8A8D91;text-align:center;font-weight:400;padding-top:6px;padding-bottom:6px;\">Meta Platforms, Inc., Attention: Community Support, 1 Meta Way, Menlo Park, CA 94025</td></tr><tr><td align=\"center\" style=\"font-size:12px;font-family:Roboto-Regular,Roboto,-apple-system,BlinkMacSystemFont,Helvetica Neue,Helvetica,Lucida Grande,tahoma,verdana,arial,sans-serif;color:#8A8D91;text-align:center;font-weight:400;padding-top:6px;\">This message was sent to <a style=\"color:#1b74e4;text-decoration:none;\" href=\"mailto:rahmat_adha072&#064;any.pink\">rahmat_adha072&#064;any.pink</a>.<br /></td></tr></table><tr style=\"\"><td height=\"10\" style=\"line-height:10px;\">&nbsp;</td></tr></td></tr></table></td><td width=\"15\" style=\"display:block;width:15px;\">&nbsp;&nbsp;&nbsp;</td></tr><tr><td width=\"15\" style=\"display:block;width:15px;\">&nbsp;&nbsp;&nbsp;</td><td style=\"\"><table border=\"0\" width=\"100%\" cellspacing=\"0\" cellpadding=\"0\" style=\"border-collapse:collapse;\"><tr><td style=\"color:#8A8D91;text-align:center;font-size:12px;font-weight:400;font-family:Roboto-Regular,Roboto,-apple-system,BlinkMacSystemFont,Helvetica Neue,Helvetica,Lucida Grande,tahoma,verdana,arial,sans-serif;\"><span class=\"mb_text\" style=\"font-family:Helvetica Neue,Helvetica,Lucida Grande,tahoma,verdana,arial,sans-serif;font-size:16px;line-height:21px;color:#141823;;color:#8A8D91;text-align:center;font-size:12px;font-weight:400;font-family:Roboto-Regular,Roboto,-apple-system,BlinkMacSystemFont,Helvetica Neue,Helvetica,Lucida Grande,tahoma,verdana,arial,sans-serif;\">To help keep your account secure, please don&#039;t forward this email. <a style=\"color:#1b74e4;text-decoration:none;\" href=\"https://www.facebook.com/email_forward_notice/?mid=61ca7c8c1de73G37fd8391b1dcG61ca81257e145G3c2\">Learn more</a></span></td></tr></table></td><td width=\"15\" style=\"display:block;width:15px;\">&nbsp;&nbsp;&nbsp;</td></tr><tr style=\"\"><td height=\"20\" style=\"line-height:20px;\" colspan=\"3\">&nbsp;</td></tr></table><span style=\"\"><img src=\"https://www.facebook.com/email_open_log_pic.php?cn=z2gGQ8aOaq&amp;mid=61ca7c8c1de73G37fd8391b1dcG61ca81257e145G3c2\" style=\"border:0;width:1px;height:1px;\" /></span></td></tr></table></body></td></tr></table></td></tr></table></html>\n\n\n",
777
+ "is_tls"=>true,
778
+ "mail_id"=>2294534389,
779
+ "message_id"=>
780
+ "<cb26f25e-3c62-11ef-af80-c3ad352e0d89@facebookmail.com>",
781
+ "result"=>true,
782
+ "subject"=>"81999 is your Facebook confirmation code",
783
+ "text"=>
784
+ "========================================\nConfirm your account\nhttps://www.facebook.com/n/?confirmemail.php&e=rahmat_adha072%40any.pink&c=98675&cuid=AYjLEHaVqlPE2RuSkBsfuKx8aRwvb11FIDx33M6L-7K945m5rJDeM2cYx6ooVUyNFbdL7TNb9peISB-Pp0AHiKXQ4vvprAO9sNAZ4r4Yb1O9nD2YhDsakhRmqiSfsapy0Xw&aref=1720358048096581&medium=email&mid=61ca7c8c1de73G37fd8391b1dcG61ca81257e145G3c2&bcode=2.1720358048.AbzarNaspfTvMqW8IAE&n_m=rahmat_adha072%40any.pink\n\n========================================\n\nHi Ruby,\n\nHi,\n\nSomeone tried to create a Facebook account with this email address. If it was you, please confirm your account.\n\nThanks,\nThe Facebook team\n\n \n\nYou may be asked to enter this confirmation code:\n\n81999\n\n \n\n========================================\nThis message was sent to rahmat_adha072@any.pink at your request.\nMeta Platforms, Inc., Attention: Community Support, 1 Meta Way, Menlo Park, CA 94025\nTo help keep your account secure, please don't forward this email. Follow the link below to learn more.\nhttps://www.facebook.com/email_forward_notice/?mid=61ca7c8c1de73G37fd8391b1dcG61ca81257e145G3c2\n\n",
785
+ "to"=>"Ruby Programmer <rahmat_adha072@any.pink>"}
786
+ ```
787
+
788
+ ### Create a facebook account
789
+ Kamu bisa menggunakan class `CreateAccount` untuk membuat akun Facebook.
790
+
791
+ **CATATAN: Fitur ini masih dalam tahap percobaan, jadi kemungkinan besar fitur ini tidak akan bekerja dengan baik.**
792
+
793
+ #### Contoh:
794
+
795
+ Di bawah ini adalah program sederhana untuk membuat akun Facebook.
796
+
797
+ ```ruby
798
+ require "FbRuby"
799
+
800
+ # Nama Depan
801
+ print ("[?] Nama Depan : ")
802
+ firstname = STDIN.gets.chomp
803
+
804
+ # Nama Belakang
805
+ print ("[?] Nama Belakang : ")
806
+ lastname = STDIN.gets.chomp
807
+
808
+ # Alamat email atau nomor hp
809
+ print ("[?] Email / Phone : ")
810
+ email = STDIN.gets.chomp
811
+
812
+ # Jenis kelamin
813
+ print ("[?] Gender (Male/Female): ")
814
+ gender = STDIN.gets.chomp
815
+
816
+ # Tanggal lahir
817
+ print ("[?] Tanggal Lahir (DD/MM/YYYY): ")
818
+ ultah = STDIN.gets.chomp
819
+
820
+ # Kata sandi akun facebook
821
+ print ("[?] Password : ")
822
+ password = STDIN.gets.chomp
823
+
824
+ create = FbRuby::CreateAccount.new(firstname: firstname, lastname: lastname, email: email, gender: gender, date_of_birth: ultah, password: password)
825
+
826
+ puts ("[+] Masukkan kode konfirmasi yang sudah di kirim ke \"#{email}\"")
827
+
828
+ loop do
829
+ begin
830
+ print ("[?] Kode Konfirmasi : ")
831
+ kode = STDIN.gets.chomp
832
+ create.confirm_account(kode)
833
+ puts ("[✓] Berhasil membuat akun facebook")
834
+ puts ("[+] Nama Akun : #{firstname} #{lastname}")
835
+ puts ("[+] Id akun : #{create.get_cookie_hash['c_user']}")
836
+ puts ("[+] Email/Phone: #{email}")
837
+ puts ("[+] Jenis kelamin: #{gender}")
838
+ puts ("[+] Tanggal Lahir: #{ultah}")
839
+ puts ("[+] Password : #{password}")
840
+ puts ("[+] Cookie Akun : #{create.get_cookie_str}")
841
+ puts ("[+] Token Akun : #{create.get_token}")
842
+ break
843
+ rescue FbRuby::Exceptions => err
844
+ puts ("[!] #{err}")
845
+ end
846
+ end
847
+ ```
848
+
849
+ ###### Hasilnya
850
+ Ini adalah akun yang di buat menggunakan library FbRuby
851
+
852
+ ![Ini adalah akun Facebook yang di buat menggunakan library FbRuby](https://i.ibb.co.com/mcXMbnm/Screenshot-20240708-002744.jpg)
853
+
854
+ #### Optional Parameter
855
+ *(Untuk `CreateAccount` class)*.
856
+
857
+ - **firstname**: Nama Depan
858
+ - **lastname**: Nama Belakang
859
+ - **email**: Alamat email yang akan di gunakan untuk mendaftar akun facebook, kamu juga bisa menggunakan nomor ponsel sebagai pengganti alamat email.
860
+ - **gender**: Jenis kelamin (Male/Female)
861
+ - **date_of_birth**: Tanggal lahir, untuk format tanggal lahir nya adalah DD/MM/YYYY, Contoh: 13/01/2006
862
+ - **password**: Kata sandi yang akan di gunakan untuk membuat akun Facebook.
863
+
864
+
865
+ # Cara Install
866
+
867
+ **FbRuby** sudah tersedia di [RubyGems](https://rubygems.org/gems/FbRuby)
868
+
869
+ ```console
870
+ $ gem install fbruby
871
+ ```
872
+
873
+ **FbRuby** bisa di install di Ruby versi 3.0.0+
874
+
875
+ # Donate
876
+ [![Donate for Rahmat adha](https://i.ibb.co/PwYMWsK/Saweria-Logo.png)](https://saweria.co/rahmatadha)