Epusdt搭建部署教程文档实现数字货币收款自由
前言 本教程基于宝塔操作面板演示Epusdt如何运行，如果你未使用宝塔面板和有更强的服务器运维基础相信你也能根据教程的一些操作找到灵感！ 准备工作 请确保已经安装并启动了Mysql和redis、Supervisord服务 准备一个telgeram机器人🤖（用于操作你的钱包和接收交易通知），申请教程参考：https://w37fhy.cn/2364.html 准备一个收银台域名，并完成解析(例如：upay.dujiaoka.com)。用于支付请求发起和扫码页面 开始使用 一、新增网站 在宝塔面板网站里新增一个网站，无需php和ftp纯静态即可，但是需要数据库！将提前解析好的收银台域名绑定。 二、导入Sql 登录管理刚刚新增数据库，导入Epusdt所需的sql文件。以下为示范0.01版本 最新数据库请以 https://github.com/assimon/epusdt/blob/master/sql/ 为准 1.手动下载导入 数据库地址:https://github.com/assimon/epusdt/blob/master/sql/v0.0.1.sql 2.使用phpMyAdmin导入 使用文本编辑器打开.sql文件，如下： -- auto-generated definitioncreate table orders( id int auto_increment primary key, trade_id varchar(32) not null comment 'epusdt订单号', order_id varchar(32) not null comment '客户交易id', block_transaction_id varchar(128) null comment '区块唯一编号', actual_amount decimal(19, 4) not null comment '订单实际需要支付的金额，保留4位小数', amount decimal(19, 4) not null comment '订单金额，保留4位小数', token varchar(50) not null comment '所属钱包地址', status int default 1 not null comment '1：等待支付，2：支付成功，3：已过期', notify_url varchar(128) not null comment '异步回调地址', redirect_url varchar(128) null comment '同步回调地址', callback_num int default 0 null comment '回调次数', callback_confirm int default 2 null comment '回调是否已确认？ 1是 2否', created_at timestamp null, updated_at timestamp null, deleted_at timestamp null, constraint orders_order_id_uindex unique (order_id), constraint orders_trade_id_uindex unique (trade_id));create index orders_block_transaction_id_index on orders (block_transaction_id);-- auto-generated definitioncreate table wallet_address( id int auto_increment primary key, token varchar(50) not null comment '钱包token', status int default 1 not null comment '1:启用 2:禁用', created_at timestamp null, updated_at timestamp null, deleted_at timestamp null) comment '钱包表';create index wallet_address_token_index on wallet_address (token); 复制-粘贴至phpmyadmin的SQL面板，然后执行 三、配置Epusdt 1.将编译好的Epusdt项目压缩包上传至刚刚新增的网站目录，随后解压。2.将.env.example重命名为.env文件，这个是配置文件3.编辑.env文件，填入你的配置<div class="highlight highlight-source-dotenv notranslate position-relative overflow-auto" dir="auto" data-snippet-clipboard-copy-content="app_name=epusdt下面配置你的域名，收银台会需要app_uri=https://upay.dujiaoka.com是否开启debug，默认falseapp_debug=falsehttp服务监听端口http_listen=:8000静态资源文件目录static_path=/static缓存路径runtime_root_path=/runtime日志配置log_save_path=/logslog_max_size=32log_max_age=7max_backups=3mysql配置mysql_host=127.0.0.1mysql_port=3306mysql_user=mysql账号mysql_passwd=mysql密码mysql_database=数据库mysql_table_prefix=mysql_max_idle_conns=10mysql_max_open_conns=100mysql_max_life_time=6redis配置redis_host=127.0.0.1redis_port=6379redis_passwd=redis_db=5redis_pool_size=5redis_max_retries=3redis_idle_timeout=1000消息队列配置queue_concurrency=10queue_level_critical=6queue_level_default=3queue_level_low=1机器人Apitokentg_bot_token=telegram代理url(大陆地区服务器可使用一台国外服务器做反代tg的url)，如果运行的本来就是境外服务器，则无需填写tg_proxy=管理员useridtg_manage=api接口认证token(用于发起交易的签名认证，请勿外泄)api_auth_token=订单过期时间(单位分钟)order_expiration_time=10强制汇率(设置此参数后每笔交易将按照此汇率计算，例如:6.4)forced_usdt_rate=">app_name=epusdt #下面配置你的域名，收银台会需要 app_uri=https://upay.dujiaoka.com #是否开启debug，默认false app_debug=false #http服务监听端口 http_listen=:8000 #静态资源文件目录 static_path=/static #缓存路径 runtime_root_path=/runtime #日志配置 log_save_path=/logs log_max_size=32 log_max_age=7 max_backups=3 # mysql配置 mysql_host=127.0.0.1 mysql_port=3306 mysql_user=mysql账号 mysql_passwd=mysql密码 mysql_database=数据库 mysql_table_prefix= mysql_max_idle_conns=10 mysql_max_open_conns=100 mysql_max_life_time=6 # redis配置 redis_host=127.0.0.1 redis_port=6379 redis_passwd= redis_db=5 redis_pool_size=5 redis_max_retries=3 redis_idle_timeout=1000 # 消息队列配置 queue_concurrency=10 queue_level_critical=6 queue_level_default=3 queue_level_low=1 #机器人Apitoken tg_bot_token= #telegram代理url(大陆地区服务器可使用一台国外服务器做反代tg的url)，如果运行的本来就是境外服务器，则无需填写 tg_proxy= #管理员userid tg_manage= #api接口认证token(用于发起交易的签名认证，请勿外泄) api_auth_token= #订单过期时间(单位分钟) order_expiration_time=10 #强制汇率(设置此参数后每笔交易将按照此汇率计算，例如:6.4) forced_usdt_rate= ⚠️注意：配置文件里面不认识的不要修改，留空即可，不会改又要瞎改，除非你对项目源代码很熟悉很有信心😁 四、配置反向代理 由于Epusdt会自动开启http服务并监听配置端口，所以可以直接用ip访问，例如: http://127.0.0.1:8000。这会显得非常不美观，还没有https。所以我们需要借助nginx的反向代理来为Epusdt绑定一个域名点击宝塔->网站->点击刚刚新增网站的设置->反向代理设置 五、赋予Epusdt执行权限 linux服务器需要赋予Epust执行权限方可启动。1.通过ssh进入服务器终端2.进入epusdt可执行文件所在目录（目录位置可以参考宝塔面板的网站根目录）3.执行命令chmod +x epusdt赋予权限(根据你的实际目录来，不用一比一抄我的，每个人的目录都不一样) 六、配置supervisor 为了保证Epusdt常驻后台运行，我们需要配置supervisor来实现进程监听打开宝塔supervisor，添加守护进程启动命令为：epusdt所在目录+epusdt执行文件+空格+http+空格+start(例如：/www/wwwroot/upay/epusdt-dev/epusdt http start)出现如下图则代表成功： 七、测试 以上步骤完成无误后，进入telegram机器人🤖，如果机器人有反馈则代表运行正常！ 其他注意事项 1.所有.env配置文件有了修改后都需要重启supervisor进程 2.教程所示的目录均为参考，请勿1:1照抄，根据自己实际情况来 3.windows与linux不同，windows请直接运行epusdt.exe即可，无需赋予执行权限
RackNerd - $10/年 1核 1G 20G 1.5T 1Gbps 洛杉矶
商家介绍racknerd发来今年黑色星期五的促销活动，最低方案月付10美元，但第2款方案才支持优选的洛杉矶DC2节点，特价独服59美元，站群服务器的价格也不贵。官方网站活动详情：https://www.racknerd.com/ 优惠方案 黑五特价VPS 1核 1G 20G 1.5T 1Gbps $10.99美元/年 黑五特价VPS 2核 2.5G 40G 3T 1Gbps $18.93美元/年 黑五特价VPS 2核 3G 60G 5.5T 1Gbps $27.89美元/年 黑五特价VPS 3核 4.5G 100G 8.5T 1Gbps $39.88美元/年 黑五特价VPS 4核 5G 130G 12T 1Gbps $55.93美元/年 退款政策 黑五方案不支持退款服务 机房测试 洛杉矶DC2：204.13.154.3 简单测试
HOSTKVM - 香港三网优化VPS 电信cn2-gia 联通cua 移动cmi
商家介绍hostkvm是一家成立于2013年的国人idc主机商，口碑和性价比都十分不错，值得推荐商家之一。新增了三网优化的香港vps产品，每个VPS默认35Mbps上行带宽，电信cn2-gia、联通cug、移动cmi，三网直连线路，可以说是最佳线路了，有兴趣可以看看。优惠码hostkvm全场8折，循环折扣。官方网站：https://www.hostkvm.com 优惠方案 香港 2核 4G 40G 300G 35Mbps $6.4/mo 香港 2核 6G 60G 500G 35Mbps $8/mo 香港 4核 8G 80G 750G 35Mbps $12/mo 香港 8核 16G 160G 1500G 35Mbps $28/mo 退款政策 3天 机房测试 联系客服获取
推荐运行环境PHP Version：7.2 及其以上PHP Need Support：Curl or Socket安装插件 下载插件：点击下载 上传到压缩包到博客插件目录：/usr/plugins/ 右键解压上传的插件压缩包，将解压出来的文件夹名称改为GithubFile，不然不能正常启用插件。 获取token进入github网站，登录自己的账号，点击新建token，如图所示填入自己想填的名称和进行选择权限后拉到最下面点击Generate token后会出现ghp_开头的一串字符，这就是你的token，复制下来后面要用。（注意：这个token只会显示一次！）启用插件 进入博客的管理后台，找到插件选项点击进入插件管理，点击设置填入你自己的相关参数后点击保存即可。 项目地址如果喜欢这个插件的话给作者点个star，给他一些动力。 GithubFile 基于Github的Typecho图床插件—Read MoreDownload as zip 常见问题如果不能正常上传的话参考这篇文章进行修改设置 记Typecho博客上传附件不成功，提示Operation timed out after 3000 milliseconds with 0 bytes received的解决记录由于博客经常要用到图片，但是上传到服务器又太占地方了，于是想到安装GithubFile插件把图片和附件上传到Github作为图床使用，但是在上传到时候就出现由于文件太大上传失败修改nginx配置client_max_body_size 100m;修改PHP配置post_max_size = 100M，upload_max_filesize = 100M把文件上限改为100M，max_execution_time = 0把超时时间改为0为不限制时间修改Typecho文件进入/var/Typecho/Http/目录，打开Client.php修改private $timeout = 3;这是程序本身代码写的限制超过3秒就会超时，所以把代码改为private $timeout = 1800;也就是超时时间改为30分钟，再次进行上传就没有出现任何问题了。 取消回复
脚本介绍独角数卡 发卡价格库存监控 Python 脚本，主要用于对监测同行的发卡库存情况与价格变动，通过telegram bot进行通知提醒，便于及时掌握商品库和价格变动。监测同行价格，只要他降价，我也降价，卷死他！ 支持类型 万能监测，对所有网站都有效，不管你监测什么内容，只要更改关键词 匹配正则表达式就行。 部署说明 python版本 安装依赖: pip install requests如果pip安装报错，解决方法 在 MONITOR_URLS 中添加要监控的商品链接和名称 替换 TELEGRAM_BOT_TOKEN 和 TELEGRAM_CHAT_ID 替换 匹配库存的正则表达式，默认独角数卡库存/价格 运行命令: sudo python3 stock_monitor.py 建议使用 systemd 管理进程， systemd 使用教程。（已集成） 项目地址：https://github.com/hadis898/stock_monitor shell版本 运行脚本bash stock_monitor.sh 功能和py脚本一样，就是不需要装py依赖，方便点。 工作原理 定期抓取配置的商品页面 提取库存和价格信息 检测变化 通过Telegram发送通知 记录日志 参数配置 CHECK_INTERVAL = 180 # 检查间隔（秒） STOCK_PATTERN = r'库存\((\d+)\)' # 匹配库存的正则表达式 PRICE_PATTERN = r'价格\s*(\d+\.\d+)' # 匹配价格的正则表达式 MAX_WORKERS = 5 # 并发线程数 Python脚本 #!/usr/bin/env python3 # -*- coding: utf-8 -*- import requests import re import time import logging import traceback import argparse import os import sys import subprocess from typing import Optional, List, Dict from concurrent.futures import ThreadPoolExecutor, as_completed # 检查并自动安装依赖 def check_and_install_dependencies(): try: import requests except ImportError: print("正在安装 requests 依赖...") subprocess.check_call([sys.executable, '-m', 'pip', 'install', 'requests']) print("requests 依赖安装成功！") check_and_install_dependencies() # Telegram Bot 配置 TELEGRAM_BOT_TOKEN = 'TELEGRAM_BOT_TOKEN' # 替换为您的电报 Token TELEGRAM_CHAT_ID = 'TELEGRAM_CHAT_ID' # 替换为您的电报聊天ID # 监控配置 MONITOR_URLS = [ {'url': 'https://cloud.upx8.com/buy/1', 'name': '云服务器（香港）'}, {'url': 'https://cloud.upx8.com/buy/2', 'name': '云服务器（美国）'}, ] CHECK_INTERVAL = 180 # 检查间隔（秒） STOCK_PATTERN = r'库存\((\d+)\)' # 根据你网站实际内容 匹配库存的正则表达式 PRICE_PATTERN = r'¥\s*(\d+\.\d+)' #根据你网站实际内容 匹配价格的正则表达式 MAX_WORKERS = 6 # 并发线程数 # 日志配置 logging.basicConfig( level=logging.INFO, format='%(asctime)s - %(levelname)s: %(message)s', handlers=[ logging.FileHandler('stock_monitor.log', encoding='utf-8'), logging.StreamHandler() ] ) class StockMonitor: def __init__(self, telegram_bot_token: str, telegram_chat_id: str): self.bot_token = telegram_bot_token self.chat_id = telegram_chat_id self.stock_states: Dict[str, Optional[int]] = {} self.price_states: Dict[str, Optional[float]] = {} self.session = requests.Session() self.session.headers.update({ 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36', 'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,*/*;q=0.8', 'Accept-Language': 'zh-CN,zh;q=0.9', }) def get_current_stock_and_price(self, url: str, product_name: str) -> Optional[Dict[str, Optional[int]]]: """ 获取当前商品库存数量和价格，仅在成功获取有效数据时返回 """ try: response = self.session.get(url, timeout=10) response.raise_for_status() # 优化正则匹配逻辑 stock_match = re.search(STOCK_PATTERN, response.text) price_match = re.search(PRICE_PATTERN, response.text) # 仅当同时找到库存和价格时才认为数据有效 if stock_match and price_match: stock = int(stock_match.group(1)) price = float(price_match.group(1)) logging.info(f"{product_name} 库存: {stock}, 价格: ¥{price}") return {'stock': stock, 'price': price} else: # 如果无法完整匹配，记录警告但不返回数据 warnings = [] if not stock_match: warnings.append("未找到库存信息") if not price_match: warnings.append("未找到价格信息") logging.warning(f"{product_name} {' 且 '.join(warnings)}") return None except (requests.RequestException, ValueError) as e: logging.error(f"{product_name} 获取页面失败: {e}") return None def send_telegram_message(self, message: str): try: url = f'https://api.telegram.org/bot{self.bot_token}/sendMessage' params = { 'chat_id': self.chat_id, 'text': message } response = requests.post(url, data=params, timeout=10) response.raise_for_status() logging.info(f"Telegram通知发送成功: {message}") except requests.RequestException as e: logging.error(f"发送Telegram通知失败: {e}") def check_stock_changes(self, monitored_urls: List[Dict[str, str]]): """ 并发检查多个URL的库存和价格变化，只在成功获取数据时比较和通知 """ with ThreadPoolExecutor(max_workers=MAX_WORKERS) as executor: futures = [ (item, executor.submit(self.get_current_stock_and_price, item['url'], item['name'])) for item in monitored_urls ] for url_info, future in futures: try: # 仅处理成功获取的有效数据 current_info = future.result() if current_info is None: # 如果无法获取有效数据，跳过处理 continue current_stock = current_info['stock'] current_price = current_info['price'] previous_stock = self.stock_states.get(url_info['url']) previous_price = self.price_states.get(url_info['url']) if previous_stock is None or previous_price is None: # 首次检测，记录初始状态 self.stock_states[url_info['url']] = current_stock self.price_states[url_info['url']] = current_price logging.info(f"{url_info['name']} 初始价格: ¥{current_price}, 初始库存: {current_stock}") # 仅在数据有变化且都为有效值时发送通知 elif (current_stock != previous_stock or current_price != previous_price): change_info = f"商品库存价格变化提醒\n" \ f"商品: {url_info['name']}\n" \ f"库存: {previous_stock} -> {current_stock}\n" \ f"价格: ¥{previous_price} -> ¥{current_price}\n" \ f"链接: {url_info['url']}" logging.info(change_info) self.send_telegram_message(change_info) # 更新状态 self.stock_states[url_info['url']] = current_stock self.price_states[url_info['url']] = current_price except Exception as e: error_info = f"{url_info['name']} 检查过程发生异常:\n{traceback.format_exc()}" logging.error(error_info) def monitor(self, monitored_urls: List[Dict[str, str]]): """ 持续监控商品库存和价格变化，增加异常处理 """ logging.info(f"开始监控 {len(monitored_urls)} 个商品的库存变化") while True: try: self.check_stock_changes(monitored_urls) time.sleep(CHECK_INTERVAL) except Exception as e: error_info = f"监控过程发生异常:\n{traceback.format_exc()}" logging.error(error_info) # 出现严重异常时仅记录日志，不发送Telegram通知 time.sleep(CHECK_INTERVAL) def setup_systemd(): """设置 Systemd 服务以实现自动启动。""" service_file_content = f""" [Unit] Description=Stock Monitor Service After=network.target [Service] ExecStart={sys.executable} {os.path.abspath(__file__)} --run WorkingDirectory={os.path.dirname(os.path.abspath(__file__))} StandardOutput=inherit StandardError=inherit Restart=always RestartSec=30s StartLimitIntervalSec=0 [Install] WantedBy=multi-user.target """ service_path = '/etc/systemd/system/stock_monitor.service' with open(service_path, 'w') as service_file: service_file.write(service_file_content) os.system('sudo systemctl daemon-reload') os.system('sudo systemctl enable stock_monitor.service') os.system('sudo systemctl start stock_monitor.service') print("\033[32m√已经设置并启动了 Stock Monitor 的 Systemd 服务\033[0m") def check_systemd_status(): """检查 Systemd 服务的状态""" os.system('sudo systemctl status stock_monitor.service') def check_systemd_restart(): """重启 Systemd 服务。""" os.system('sudo systemctl restart stock_monitor.service') print("\033[32m√已成功加载配置，并重启成功\033[0m") def remove_systemd_service(): """移除 Systemd 服务配置。""" os.system('sudo systemctl stop stock_monitor.service') os.system('sudo systemctl disable stock_monitor.service') os.system('sudo rm /etc/systemd/system/stock_monitor.service') os.system('sudo systemctl daemon-reload') print("\033[32m√已移除 Stock Monitor 的 Systemd 服务配置\033[0m") def parse_arguments(): """解析命令行参数""" parser = argparse.ArgumentParser(description='Stock Monitor Service') parser.add_argument('--run', action='store_true', help='Run the stock monitor directly') return parser.parse_args() def main(): args = parse_arguments() if args.run: # 当使用 --run 参数时，直接启动监控 monitor = StockMonitor(TELEGRAM_BOT_TOKEN, TELEGRAM_CHAT_ID) monitor.monitor(MONITOR_URLS) else: # 交互模式 while True: print("\033[34m\n输入数字选择：\033[0m") print("1、临时运行 -测试效果") print("2、后台运行 -自动配置并启动 Systemd 服务") print("3、检查 Systemd 状态") print("4、重启 Systemd 服务") print("5、移除 Systemd 配置") print("0、退出") try: choice = int(input("请选择操作（1-5）：")) if choice == 1: monitor = StockMonitor(TELEGRAM_BOT_TOKEN, TELEGRAM_CHAT_ID) try: monitor.monitor(MONITOR_URLS) except KeyboardInterrupt: logging.info("程序被手动终止") elif choice == 2: setup_systemd() elif choice == 3: check_systemd_status() elif choice == 4: check_systemd_restart() elif choice == 5: remove_systemd_service() elif choice == 0: print("\033[31m√成功退出程序\033[0m") break else: print("无效的选择，请输入1-5之间的数字。") except ValueError: print("请输入有效的数字。") if __name__ == '__main__': main()
搬瓦工 - $36/年 1核 1G 20G 1T 2.5Gbps 洛杉矶cn2+cmin2
商家介绍搬瓦工新上了一款nodeseek联名方案，采用AMD的CPU、节点为洛杉矶DC1、线路为电信cn2-gia联通移动cmin2、带宽为2.5Gbps上行端口，增加了ipv6支持，整体的配置和性能都很优秀，值得推荐。优惠码BWHCGLUKKB5个点折扣，蚊子腿肉。官方网站：https://bwh81.net/ 优惠方案 NodeSeek-Biggerbox-Pro 核心：1核AMD 内存：1GB 硬盘：20GB 流量：1TB 端口：2.5Gbps 架构：KVM 价格：36美元/年 退款政策 30天 机房测试 机房：洛杉矶DC1线路：电信cn2gia 移动联通cmin2测试：45.62.113.x
DreamCloud - $9/mo 2核 2G 50G 2T 50Mbps 日本4837高防
商家介绍DreamCloud是一家中国idc主机商，主要提供日本高防vps和日本高防独服业务，提供2T国际方向+100G大陆方向的ddos高防服务，价格也很亲民，线路为中国方向三网4837直连，速度还是可以的。官方网站：https://whmcs.as211392.com/ 优惠方案 日本DDOS 2Core 2GB 50GB 2TB 50Mbps KVM 9.99美元/月 日本DDOS 2Core 4GB 60GB 3TB 50Mbps KVM 13.99美元/月 日本DDOS 4Core 6GB 100GB 5TB 50Mbps KVM 19.99美元/月 退款政策 不退款 机房测试 产品：LiteCore Japan Anti DDOS VPS测试：http://23.145.248.3
最近TG、论坛有些用户诈骗行为非常猖狂，表现为： 看到交易贴就私聊用户telegram，通过大量私聊欺骗不小心的用户 不断变换自己的telegram用户名 骗不到就立马换下一个目标，似乎有大量时间用于此 因此花了一点时间搓了一个电报私聊机器人，和那个流行的@LivegramBot功能基本一致此外，bot还做了黑名单增强，遇到骗子私聊自动发出提醒，支持自部署，下面是详细介绍：NFD一个基于cloudflare worker的telegram 消息转发bot，集成了反欺诈功能特点 基于cloudflare worker搭建，能够实现以下效果 搭建成本低，一个js文件即可完成搭建 不需要额外的域名，利用worker自带域名即可 基于worker kv实现永久数据储存 稳定，全球cdn转发 接入反欺诈系统，当聊天对象有诈骗历史时，自动发出提醒 支持屏蔽用户，避免被骚扰 搭建方法 （老鸟精简版） 从@BotFather获取token，并且可以发送/setjoingroups来禁止此Bot被添加到群组 从uuidgenerator获取一个随机uuid作为secret 从@username_to_id_bot获取你的用户id 登录cloudflare，创建一个worker 配置worker的变量 增加一个ENV_BOT_TOKEN变量，数值为从步骤1中获得的token 增加一个ENV_BOT_SECRET变量，数值为从步骤2中获得的secret 增加一个ENV_ADMIN_UID变量，数值为从步骤3中获得的用户id 先去创建2个KV空间，名为nfd FRAUD_LIST的kv数据库，然后回到workers项目的设置里绑定kv数据库，nfd -> nfd FRAUD_LIST -> FRAUD_LIST 点击右上角 编辑代码，复制workers.js到编辑器中部署 通过打开https://xxx.workers.dev/registerWebhook来注册websoket，显示OK就表示成功了 使用方法 当其他用户给bot发消息，会被转发到bot创建者 用户回复普通文字给转发的消息时，会回复到原消息发送者 用户回复/block, /unblock, /checkblock等命令会执行相关指令，不会回复到原消息发送者 欺诈数据源 文件fraud.db为欺诈数据，格式为每行一个uid 可以通过pr扩展本数据，也可以通过提issue方式补充 提供额外欺诈信息时，需要提供一定的消息出处 搭建方法 （菜鸟图文版） 1.从@BotFather获取token，并且可以发送/setjoingroups来禁止此Bot被添加到群组设置你的BOT用户名和名字设置完后会获得一个TOKEN2.从uuidgenerator获取一个随机uuid作为secret这个就是3.从@username_to_id_bot获取你的用户id4.登录cloudflare，创建一个worker这里不用管，先点部署先来配置环境，再次点这里，选择你创建的workers点击设置增加一个ENV_BOT_TOKEN变量，数值为从步骤1中获得的token增加一个ENV_BOT_SECRET变量，数值为从步骤2中获得的secret增加一个ENV_ADMIN_UID变量，数值为从步骤3中获得的用户id创建2个KV1、第一个名称设置为nfd 2、第二个名称设置为FRAUD_LIST回到这里鼠标滚轮往下滑，找到这个前面写nfd、FRAUD_LIST,后面选择你刚才创建的nfd、FRAUD_LIST回到workers页面,选择你刚创建的workers,点击快速编辑进入这个页面复制代码，点击图中按钮复制复制到这个框里,然后点右上角的保存并部署以上都做完后，回到你的workers，里面会有一个网址将这个网址复制到浏览器，在后面添加"/registerWebhook"，然后回车网页中会弹出OK 新版：https://github.com/nccttc/Telegram-O.o-GO-
商家介绍dmit在今天正式推出2款圣诞节促销套餐，分别为PRO有EB系列，均为年付方案，其中PRO系列产品为三网回程CN2-GIA线路、EB系列为电信移动CMIN2+联通9929线路，当前活动火爆下手从速。小提示：大妈品质出品，上手不容错过。官方网站：https://www.dmit.io 优惠方案 LAX.AN4.Pro.WEE 1Core 1GB 20GB 500GB 500Mbps KVM 39.9美元/年 LAX.AN4.EB.CORONA 1Core 1GB 20GB 2000GB 2Gbps KVM 49.9美元/年 退款政策 3天 机房测试 联系客服获取
商家介绍双十一vmiss也提供了全年最低折扣，韩国bgp、日本3节点（东京IIJ、大阪IIJ、东京BGP）、英国9929提供七折，其它香港bgp、cn2、洛杉矶cn2、9929、cmin2等均为八折，默认使用加元结算。优惠码17LQY2AENU七折，20%off八折。官方网站：https://www.vmiss.com 优惠方案 韩国BGP 1核 1G 10G 300G 50M 3.5加元/月 日本大阪IIJ 1核 1G 10G 500G 500M 3.5加元/月 日本东京IIJ 1核 1G 10G 500G 500M 3.5加元/月 日本东京BGP 1核 1G 10G 400G 500M 3.5加元/月 英国9929 1核 1G 10G 500G 200M 3.5加元/月 退款政策 We offer a 3-days refund policy. 机房测试 联系客服获取