本文文档详细介绍了币安Alpha空投监控通知系统的技术原理与实现方式。该系统能够定时监控币安Alpha平台的空投信息,在特定时间点触发检查,并通过飞书(Feishu)、第三方API及Twitter等渠道发送通知,帮助用户及时获取空投机会。
系统主要实现以下核心功能:
- 按预设制定时策略触发监控任务(特定时间点执行)
- 从币安API获取最新空投信息
- 验证空投时间与预期时间的匹配性
- 计算空投代币的当前价值
- 多渠道发送格式化通知(飞书、第三方API、Twitter)
- 包含错误处理与重试机制
系统采用基于时间的触发机制,确保在预设时间点执行监控任务,具体触发策略:
- 特殊时间点:每小时55分01秒、59分01秒、整点01秒
- 常规时间点:每小时的05:01、10:01...50:01(每5分钟)
- 运行时间段限制:仅在12:00-24:00之间运行
实现原理:通过wait_for_trigger_time()函数计算下一个触发时间,使用time.sleep()进行等待,确保任务在精确时间点执行。
- 空投信息获取:通过币安公开API
query-alpha-airdrop接口获取空投配置信息 - 代币价格获取:从币安API获取指定代币的当前价格
- 时间验证:将API返回的时间戳与预期触发时间进行比对,允许3分钟误差范围
系统采用异步处理方式发送通知,提高效率:
- 使用
asyncio实现异步任务调度 - 对飞书和第三方API通知采用异步HTTP请求
- 对同步的
requests库通过run_in_executor在异步上下文中执行
- 网络请求失败时自动重试(最多3次)
- 异常捕获与处理(网络错误、JSON解析错误等)
- 失败通知机制(获取信息失败时发送错误通知)
-
定时模块
wait_for_trigger_time():计算并等待下一个触发时间- 时间检查逻辑确保仅在12:00-24:00运行
-
数据获取模块
get_airdrop_info():获取空投信息(带重试机制)get_token_price():获取代币当前价格is_timestamp_matching():验证时间匹配性
-
通知模块
send_feishu_notification():发送飞书通知send_new_api_notifications():发送第三方API通知send_to_twitter():发送Twitter推文- 消息生成函数:
generate_notification_message()和generate_tweet_message()
-
主控制模块
handle_airdrop_claim():处理空投通知主逻辑main():程序入口,循环执行监控任务
- 程序启动后进入无限循环
- 计算并等待下一个触发时间点
- 到达触发时间后,从币安API获取空投信息
- 验证空投时间与预期时间是否匹配
- 如匹配,获取代币价格并生成通知内容
- 发送通知到各渠道(飞书、第三方API、Twitter)
- 完成后等待下一个触发周期
系统配置位于代码底部的config字典和TWITTER_CONFIG字典:
# Twitter API配置
TWITTER_CONFIG = {
"consumer_key": "input",
"consumer_secret": "input",
"access_token": "input",
"access_token_secret": "input"
}
# 通知渠道配置
config = {
"feishu_hook_urls": [
"https://open.feishu.cn/open-apis/bot/v2/hook/",
# 可添加更多飞书Webhook地址
],
"fanwan_apis": [
"https://fwalert.com/"
# 可添加更多第三方API地址
]
}系统依赖以下Python库:
requests:处理HTTP请求asyncio:实现异步操作tweepy:Twitter API交互datetime和time:时间处理json:JSON数据处理
- 需要先配置有效的API密钥和Webhook地址才能正常运行
- 网络环境需要能够访问币安API和Twitter API
- 系统设计为长期运行的服务型程序
- 时间匹配存在3分钟误差容忍度,适应网络延迟等情况
- 所有外部API请求都包含超时和错误处理