Viết một con IRC bot với Python
Python
39
White

Vu Nhat Minh viết ngày 27/05/2015

Tại sao lại là IRC bot ?

Mình chơi với một hội bạn thân từ đại học, trước cái thời có Slack như bây giờ thì mọi liên lạc chủ yếu được thực hiện qua 1 room chat IRC private trên freenode.. Tuy nhiên với việc mỗi người một múi giờ thì giờ online của các thành viên là khác nhau, log chat cũng không được lưu tự động như Slack. Vì vậy hồi đó mình và một bạn nữa đã quyết định viết một hệ thống gồm 1 con IRC bot và 1 trang web đơn giản với mục đích:

  • Log lại toàn bộ chat log một cách tự động.
  • Kết nỗi với 1 website hiển thị chat log để browse cho tiện.

Mình là người thực hiện phần viết bot, vì thế trong bài viết này sẽ chia sẻ về tính năng của con bot đó.

Batmanbot và tính năng cơ bản

Con bot được đặt tên là "BatmanBot" và có thể chào hỏi khi một người mới vào channel, trả lời một vài câu đơn giản, tính toán như một python shell và, quan trọng nhất là log lại toàn bộ nội dung chat trong channel

Nếu muốn xem chatlog nhanh thì cũng có thể nói chuyện trực tiếp với con bot thông qua kênh private message

Tự viết con bot của riêng bạn

Source của BatmanBot được open trên Github. Nếu bạn muốn dùng thành con bot của riêng bạn thì cần phải

  • Clone lại source code
  • Tạo database cho bot (ở đây là sqlite)
  • Viết file config chứa những thông tin cơ bản.

Cách làm được tóm tắt dưới đây bằng hình ảnh và code (config) dưới đây

SERVER = ["irc.freenode.org"]
CHANNEL = "#gotham"
PASSWORD = ""
NICKNAME = ["BatmanBot"]
MAIN_SERVER = "irc.freenode.org"

Sau khi hoàn tất 3 bước trên, việc cuối cùng là chỉ cần bật con bot lên

python BatmanBot.py

TL:DR

Viết một con bot IRC bằng Python không khó lắm và những chức năng cơ bản có thể làm xong trong thời gian ngắn. Tuy nhiên nếu bạn muốn một con bot có nhiều tính năng "cool" hơn thì có thể tham khảo HuBot của Github team.
BatmanBot đối với mình giống như là một homework, và vì sử dụng hàm eval để tính toán dẫn đến một game bot-hack khi các thành viên khác cố gắng import sysrm -rf . khi nói chuyện với BatmanBot :-)

Bình luận


White
{{ comment.user.name }}
Bỏ hay Hay
{{comment.like_count}}
Male avatar
{{ comment_error }}
Hủy
   

Hiển thị thử

Chỉnh sửa

White

Vu Nhat Minh

54 bài viết.
724 người follow
Kipalog
{{userFollowed ? 'Following' : 'Follow'}}
Cùng một tác giả
White
116 29
Nếu bạn thường vào trang mua sắm của amazon, chắc sẽ chẳng lạ gì với menu Shop by Department. Tốc độ hiển thị nội dung của menu là tức thì so với d...
Vu Nhat Minh viết hơn 2 năm trước
116 29
White
87 4
Lời người dịch Người dịch là một developer , sau khi tìm đọc được bài viết này bằng bản gốc tiếng Anh đã cảm thấy như được "khai sáng" về khả năng...
Vu Nhat Minh viết hơn 2 năm trước
87 4
White
56 5
Đây là phần cuối của một series chuyên về thiết kế UI. Bạn nên đọc (Link) trước khi bắt đầu đọc phần này. Luật số 7: "Ăn trộm" như là một nghệ sỹ...
Vu Nhat Minh viết hơn 2 năm trước
56 5
Bài viết liên quan
White
1 0
Mở đầu Như đã nói ở bài trước, mình đang nghiên cứu về Spark nên cần log lại một số thứ để dành sau này dùng đến :smile: Đối tượng hướng đến vẫn ...
Phạm Quốc Thắng viết gần 2 năm trước
1 0
White
4 3
Observer pattern (python example) 1. Observer là gì : Theo như (Link) Observer Pattern là : A software design pattern in which an object, calle...
Khôi Trọng Nguyễn viết hơn 1 năm trước
4 3
White
0 0
Web Framework Flask định nghĩa route bằng annotations kiểu như @route('/users/add', methods='GET']) def user_add(): pass Lợi thế của cách là...
studybot viết hơn 2 năm trước
0 0
{{like_count}}

kipalog

{{ comment_count }}

bình luận

{{liked ? "Đã kipalog" : "Kipalog"}}


White
{{userFollowed ? 'Following' : 'Follow'}}
54 bài viết.
724 người follow

 Đầu mục bài viết

Vẫn còn nữa! x

Kipalog vẫn còn rất nhiều bài viết hay và chủ đề thú vị chờ bạn khám phá!