下载地址:www.pan38.com/dow/share.p… 提取密码:1829
这个项目包含以下主要功能模块:
- 配置文件管理(config.py):集中管理所有平台API配置、数据库连接和消息模板
- 数据库操作(db_handler.py):处理所有数据库相关操作,包括消息日志存储和用户数据获取
- 平台API客户端(api_client.py):封装各平台的API调用,实现消息发送和自动回复功能
- 主程序(message_bot.py):协调各模块工作,实现多线程的消息发送和自动回复处理
使用前需要:
- 安装依赖:pip install requests pymysql python-dotenv
- 创建数据库表结构
- 配置.env文件中的API令牌和数据库信息
- 准备目标用户数据
import os from dotenv import load_dotenv
load_dotenv()
平台API配置
PLATFORM_CONFIG = { "douyin": { "api_url": "api.douyin.com", "auth_token": os.getenv("DOUYIN_TOKEN"), "rate_limit": 30 # 每分钟限制 }, "xiaohongshu": { "api_url": "edith.xiaohongshu.com", "auth_token": os.getenv("XHS_TOKEN"), "rate_limit": 20 }, "kuaishou": { "api_url": "open.kuaishou.com", "auth_token": os.getenv("KS_TOKEN"), "rate_limit": 25 }, "weibo": { "api_url": "api.weibo.com", "auth_token": os.getenv("WEIBO_TOKEN"), "rate_limit": 50 }, "bilibili": { "api_url": "api.bilibili.com", "auth_token": os.getenv("BILI_TOKEN"), "rate_limit": 40 } }
数据库配置
DATABASE_CONFIG = { "host": os.getenv("DB_HOST", "localhost"), "port": os.getenv("DB_PORT", 3306), "user": os.getenv("DB_USER", "root"), "password": os.getenv("DB_PASSWORD", ""), "database": os.getenv("DB_NAME", "message_bot") }
消息模板
MESSAGE_TEMPLATES = { "default": "你好,很高兴认识你!", "promotion": "我们的新产品上市了,欢迎了解详情!", "followup": "感谢关注,有什么可以帮您的吗?" }
pymysql from pymysql import Error from config import DATABASE_CONFIG
class DatabaseHandler: def init(self): self.connection = None self.connect()
def connect(self):
try:
self.connection = pymysql.connect(
host=DATABASE_CONFIG["host"],
port=DATABASE_CONFIG["port"],
user=DATABASE_CONFIG["user"],
password=DATABASE_CONFIG["password"],
database=DATABASE_CONFIG["database"],
charset="utf8mb4",
cursorclass=pymysql.cursors.DictCursor
)
except Error as e:
print(f"数据库连接失败: {e}")
def execute_query(self, query, params=None):
try:
with self.connection.cursor() as cursor:
cursor.execute(query, params or ())
if query.strip().lower().startswith("select"):
return cursor.fetchall()
self.connection.commit()
return cursor.rowcount
except Error as e:
print(f"查询执行失败: {e}")
self.connection.rollback()
return None
def save_message_log(self, platform, user_id, message, status):
query = """
INSERT INTO message_logs
(platform, user_id, message, status, created_at)
VALUES (%s, %s, %s, %s, NOW())
"""
return self.execute_query(query, (platform, user_id, message, status))
def get_user_list(self, platform, limit=100):
query = """
SELECT user_id, username, last_contacted
FROM target_users
WHERE platform = %s
ORDER BY last_contacted ASC
LIMIT %s
"""
return self.execute_query(query, (platform, limit))
def close(self):
if self.connection:
self.connection.close()