Khi lập trình viên chơi facebook – Biến Facebook messenger thành bot tra cứu tử vi


Giới thiệu

Ở trong cái xã hội mà nhà nhà, người người, từ trẻ nhỏ tới người già, từ nông thông tới thành thị đều dùng mạng xã hội. Đặc biệt thứ mà nhiều người đa số đều dùng đó chính là facebook. Nên là facebook là gì hay là làm thế nào chơi facebook thì mình sẽ không đề cập ở trong bài viết này, thế nhá! Với mình là một lập trình viên thì hôm nay, tại đây mình sẽ hưóng dẫn các bạn chơi facebook một cách thật ngầu, thật chất.

Sản phẩm của mình làm ra trong hôm nay chính là: Biến messenger cá nhân trên facebook của bạn thành một bot đa năng.

Demo

Bắt đầu

Thì với mình là một thằng code Python nên trong bài viết này mình xin được phép sẽ dùng Python để múa rìu qua mắt thợ.

  • Chuẩn bị: Những thứ chuẩn bị ở đây anh/em code python chắc chắn biết cài rồi nên mình chỉ liệt kê mà không hưóng dẫn nữa nhé
    • Python 3.6
    • Cài đặt thư viện fbchat và requests:

  $ pip install fbchat requests 

    • Tạo một folder project: Chắc chắn rồi, khi code chúng ta cần vứt code vào 1 folder ở đây mình đặt tên folder là nguyenmanh_messenger_bot.
    • Tạo file main.py: * Đây chính là file mình sẽ code chương trình chính trong này =)) nói những thứ thừa thãi v**
    • Tạo file tu_vi.py: Dùng để code mấy thứ liên quan tới API tử vi
    • Tạo file session.json: Dùng lưu session facebook
    • Tạo file nguyen_manh_bot.py: Dùng để code bot messenger alt text
  • Danh sách API dùng trong bài viết:
    • Tử vi cung hoàng đạo hằng ngày: https://api.kma-chatbot.com/cunghoangdao.php?cung= <Tên cung hoàng đạo>
      • Ví dụ cung hoàng đạo: Song ngư
    • Tử vi 12 con giáp hằng ngày: https://api.kma-chatbot.com/tuvi.php?tuoi= <con giáp>
      • Ví dụ con giáp: Sửu

Triển khai code

  • Code tu_vi.py:

  import requests      class TuVi():      def __init__(self):          pass        def con_giap(self, Cgiap=''):          url = 'https://api.kma-chatbot.com/tuvi.php?tuoi={

}'.format(Cgiap.strip())          loi_phan = ''  # Lời phán            try:              r = requests.get(url)              data_json = r.json()                set_attributes = data_json.get('set_attributes')                if set_attributes:                  loi_phan = '-----{

}-----n- {

}n- {

}n- {

}n- {

}n'.format(                      set_attributes.get('tvcongiap'),                      set_attributes.get('congviec'),                      set_attributes.get('tinhcam'),                      set_attributes.get('taivan'),                      set_attributes.get('cantrong')                  )          except:              loi_phan = 'Có thể con giáp bạn nhập bị sai :('            return loi_phan        def cung_hoang_dao(self, cung_hd=''):          # Cái này mình cho API rồi các bạn tự viết nha =)) Lười!          pass 

  • Code nguyen_manh_bot.py

  # -*- coding: UTF-8 -*-  from fbchat.models import *  from fbchat import log, Client    from tu_vi import TuVi      class NguyenManhBot(Client):      def onMessage(self, author_id, message_object, thread_id, thread_type, **kwargs):          self.markAsDelivered(thread_id, message_object.uid)          self.markAsRead(thread_id)            log.info("{

} from {

} in {

}".format(message_object, thread_id, thread_type.name))            if author_id != self.uid:              if message_object.text:                  if message_object.text == '/Getid' or message_object.text == '/getid':                      self.send(Message(text=message_object.author), thread_id=thread_id, thread_type=thread_type)                    elif '/tuvi' in message_object.text:                      tuoi = message_object.text[message_object.text.index('/tuvi') + len('/tuvi'):]                      tuvi = TuVi()                      loi_phan = tuvi.con_giap(Cgiap=tuoi)                      self.send(Message(text=loi_phan), thread_id=thread_id, thread_type=thread_type)                  else:                      self.send(Message(                          text='n n Tôi là Nguyễn Mạnh. n- Tôi sẽ rep sau khi đi công việc về n- Nếu xem tử vi gõ /tuvi 
<tuổi>; ví dụ: /tuvi sửu. n- Tin nhắn của bạn: {
0
}'.format(                              message_object.text)),                          thread_id=thread_id,                          thread_type=thread_type                      ) 

  • Code main.py

googletag.cmd.push(function() { googletag.display(‘p-gpt-ad-1546852316124-0’); });

  import json    from nguyen_manh_bot import NguyenManhBot      def main():      # Load session đăng nhập từ trước nếu có      with open('session.json') as f:          session_cookies = json.load(f)        client = NguyenManhBot('username', 'password', session_cookies=session_cookies)        # Lấy session và lưu vào file để lần sau dùng cho đăng nhập      session_cookies_new = client.getSession()      with open('session.json', 'w') as outfile:          json.dump(session_cookies_new, outfile)        # Lắng nghe phản hồi từ messenger      client.listen()      if __name__ == '__main__':      main() 

Đưa code lên heroku

.uc05220e88347bb79b7a1d14890e8d643 { padding:0px; margin: 0; padding-top:1em!important; padding-bottom:1em!important; width:100%; display: block; font-weight:bold; background-color:#eaeaea; border:0!important; border-left:4px solid #34495E!important; text-decoration:none; } .uc05220e88347bb79b7a1d14890e8d643:active, .uc05220e88347bb79b7a1d14890e8d643:hover { opacity: 1; transition: opacity 250ms; webkit-transition: opacity 250ms; text-decoration:none; } .uc05220e88347bb79b7a1d14890e8d643 { transition: background-color 250ms; webkit-transition: background-color 250ms; opacity: 1; transition: opacity 250ms; webkit-transition: opacity 250ms; } .uc05220e88347bb79b7a1d14890e8d643 .ctaText { font-weight:bold; color:inherit; text-decoration:none; font-size: 16px; } .uc05220e88347bb79b7a1d14890e8d643 .postTitle { color:#000000; text-decoration: underline!important; font-size: 16px; } .uc05220e88347bb79b7a1d14890e8d643:hover .postTitle { text-decoration: underline!important; }

  Render JSON, thư viện nào mới tốt?

.u3b9753e1782f425f6b38af2e9a7e1360 { padding:0px; margin: 0; padding-top:1em!important; padding-bottom:1em!important; width:100%; display: block; font-weight:bold; background-color:#eaeaea; border:0!important; border-left:4px solid #34495E!important; text-decoration:none; } .u3b9753e1782f425f6b38af2e9a7e1360:active, .u3b9753e1782f425f6b38af2e9a7e1360:hover { opacity: 1; transition: opacity 250ms; webkit-transition: opacity 250ms; text-decoration:none; } .u3b9753e1782f425f6b38af2e9a7e1360 { transition: background-color 250ms; webkit-transition: background-color 250ms; opacity: 1; transition: opacity 250ms; webkit-transition: opacity 250ms; } .u3b9753e1782f425f6b38af2e9a7e1360 .ctaText { font-weight:bold; color:inherit; text-decoration:none; font-size: 16px; } .u3b9753e1782f425f6b38af2e9a7e1360 .postTitle { color:#000000; text-decoration: underline!important; font-size: 16px; } .u3b9753e1782f425f6b38af2e9a7e1360:hover .postTitle { text-decoration: underline!important; }

  Nhật Bản: Code sẽ trở thành môn học bắt buộc từ lớp 5 vào năm 2020

Bây giờ bạn đã có một bot khá ok rồi, bạn có thể chạy trên local nhưng để chuyên nghiệp hơn thì chúng ta nên đưa nó lên heroku để không phải bật máy cho nó listen mãi =))

  • Bước 1: Vào heroku tạo một tài khoản
  • Bước 2: Tạo app heroku
  • Bước 3: Cài git và heroku lên máy
  • Bước 4: Deploy code lên heroku
    • Để heroku chạy được code bạn thì cần phải tạo 1 file ‘Procfile’ trong project với nội dung

  worker: python test.py 

Làm theo các bưóc sau để đưa code lên

  • Đăng nhập heroku

  $ heroku login 

  • Khởi tạo git

  $ git init 

  • Add remote của heroku vào git Thay nguyen-manh-messenger bằng tên app bạn tạo trên heroku

  $ heroku git:remote -a nguyen-manh-messenger 

  • Deploy app của bạn

  $ git add .  $ git commit -am "Lần đầu làm chuyện ấy"  $ git push heroku master 

Kết quả

  • Source code: https://github.com/nguyenmanh1997/nguyenmanh-messager
  • Sau khi làm theo như mình hướng dẫn bên trên thì bạn đã có một con bot tra cứu tử vi trên messenger cá nhân của bạn rồi. Giờ vào tận hưởng thành quả đi nào.
  • Các bạn dựa vào code mình làm và nâng cấp thêm nhiều chức năng mới nhé.
  • Chúc các bạn thành công!

.u20561e7564b4832684c42f09c2d9b253 { padding:0px; margin: 0; padding-top:1em!important; padding-bottom:1em!important; width:100%; display: block; font-weight:bold; background-color:#eaeaea; border:0!important; border-left:4px solid #34495E!important; text-decoration:none; } .u20561e7564b4832684c42f09c2d9b253:active, .u20561e7564b4832684c42f09c2d9b253:hover { opacity: 1; transition: opacity 250ms; webkit-transition: opacity 250ms; text-decoration:none; } .u20561e7564b4832684c42f09c2d9b253 { transition: background-color 250ms; webkit-transition: background-color 250ms; opacity: 1; transition: opacity 250ms; webkit-transition: opacity 250ms; } .u20561e7564b4832684c42f09c2d9b253 .ctaText { font-weight:bold; color:inherit; text-decoration:none; font-size: 16px; } .u20561e7564b4832684c42f09c2d9b253 .postTitle { color:#000000; text-decoration: underline!important; font-size: 16px; } .u20561e7564b4832684c42f09c2d9b253:hover .postTitle { text-decoration: underline!important; }

  Tự động trả lời tin nhắn thông minh và hài hước qua facebook messenger sử dụng Node.js và Simsimi

.uad65b28101047ab7dfe9d199f9240477 { padding:0px; margin: 0; padding-top:1em!important; padding-bottom:1em!important; width:100%; display: block; font-weight:bold; background-color:#eaeaea; border:0!important; border-left:4px solid #34495E!important; text-decoration:none; } .uad65b28101047ab7dfe9d199f9240477:active, .uad65b28101047ab7dfe9d199f9240477:hover { opacity: 1; transition: opacity 250ms; webkit-transition: opacity 250ms; text-decoration:none; } .uad65b28101047ab7dfe9d199f9240477 { transition: background-color 250ms; webkit-transition: background-color 250ms; opacity: 1; transition: opacity 250ms; webkit-transition: opacity 250ms; } .uad65b28101047ab7dfe9d199f9240477 .ctaText { font-weight:bold; color:inherit; text-decoration:none; font-size: 16px; } .uad65b28101047ab7dfe9d199f9240477 .postTitle { color:#000000; text-decoration: underline!important; font-size: 16px; } .uad65b28101047ab7dfe9d199f9240477:hover .postTitle { text-decoration: underline!important; }

  MESSENGER MARKETING & CHATBOT – Cánh cửa mới cho lĩnh vực tiếp thị số

googletag.cmd.push(function() { googletag.display(‘p-gpt-ad-1529578121466-1’); });

Sending
User Review
0 (0 votes)
Tags:

Leave a Reply

avatar
  Subscribe  
Notify of