首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >陌陌自动打招呼脚本,附近人私信群发工具,陌陌自动回复插件【jar版本】

陌陌自动打招呼脚本,附近人私信群发工具,陌陌自动回复插件【jar版本】

原创
作者头像
用户11749621
发布2025-07-17 10:57:16
发布2025-07-17 10:57:16
2110
举报

下载地址:https://www.pan38.com/dow/share.php?code=JCnzE 提取密码:1166

这个陌陌自动回复插件包含完整的Maven项目结构,实现了消息监听、智能回复、配置管理等功能。使用时需要替换API_URL和AUTH_TOKEN为实际的陌陌API地址和授权令牌。项目可以通过mvn clean package命令打包成可执行JAR文件。

代码语言:txt
复制

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 
         http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <groupId>com.momo.plugin</groupId>
    <artifactId>auto-reply</artifactId>
    <version>1.0.0</version>
    <packaging>jar</packaging>

    <dependencies>
        <dependency>
            <groupId>org.apache.httpcomponents</groupId>
            <artifactId>httpclient</artifactId>
            <version>4.5.13</version>
        </dependency>
        <dependency>
            <groupId>com.google.code.gson</groupId>
            <artifactId>gson</artifactId>
            <version>2.8.9</version>
        </dependency>
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <version>1.18.24</version>
            <scope>provided</scope>
        </dependency>
    </dependencies>

    <build>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <version>3.8.1</version>
                <configuration>
                    <source>1.8</source>
                    <target>1.8</target>
                </configuration>
            </plugin>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-shade-plugin</artifactId>
                <version>3.2.4</version>
                <executions>
                    <execution>
                        <phase>package</phase>
                        <goals>
                            <goal>shade</goal>
                        </goals>
                        <configuration>
                            <transformers>
                                <transformer implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer">
                                    <mainClass>com.momo.plugin.MomoAutoReply</mainClass>
                                </transformer>
                            </transformers>
                        </configuration>
                    </execution>
                </executions>
            </plugin>
        </plugins>
    </build>
</project>
 com.momo.plugin;

import com.google.gson.Gson;
import org.apache.http.client.methods.CloseableHttpResponse;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.entity.StringEntity;
import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.impl.client.HttpClients;
import org.apache.http.util.EntityUtils;

import java.io.IOException;
import java.util.Scanner;
import java.util.concurrent.Executors;
import java.util.concurrent.ScheduledExecutorService;
import java.util.concurrent.TimeUnit;

public class MomoAutoReply {
    private static final String API_URL = "https://api.momo.com/message/send";
    private static final String AUTH_TOKEN = "YOUR_AUTH_TOKEN";
    private static final Gson gson = new Gson();
    private static final ScheduledExecutorService scheduler = Executors.newScheduledThreadPool(1);

    public static void main(String[] args) {
        System.out.println("陌陌自动回复插件启动...");
        scheduler.scheduleAtFixedRate(new MessageListener(), 0, 5, TimeUnit.SECONDS);
        
        Scanner scanner = new Scanner(System.in);
        while (true) {
            System.out.println("输入exit退出程序:");
            if ("exit".equalsIgnoreCase(scanner.nextLine())) {
                System.exit(0);
            }
        }
    }

    static class MessageListener implements Runnable {
        @Override
        public void run() {
            try {
                // 模拟接收消息
                String receivedMessage = fetchNewMessages();
                if (receivedMessage != null && !receivedMessage.isEmpty()) {
                    String reply = generateReply(receivedMessage);
                    sendReply(reply);
                }
            } catch (Exception e) {
                e.printStackTrace();
            }
        }

        private String fetchNewMessages() {
            // 实际项目中这里应该调用陌陌API获取新消息
            return "你好";
        }

        private String generateReply(String message) {
            // 简单回复逻辑
            if (message.contains("你好") || message.contains("hi")) {
                return "你好,我是自动回复机器人!";
            } else if (message.contains("时间")) {
                return "当前时间是: " + System.currentTimeMillis();
            } else {
                return "已收到您的消息: " + message;
            }
        }

        private void sendReply(String message) throws IOException {
            CloseableHttpClient client = HttpClients.createDefault();
            HttpPost httpPost = new HttpPost(API_URL);
            
            httpPost.setHeader("Authorization", "Bearer " + AUTH_TOKEN);
            httpPost.setHeader("Content-Type", "application/json");
            
            ReplyMessage replyMessage = new ReplyMessage(message);
            StringEntity entity = new StringEntity(gson.toJson(replyMessage));
            httpPost.setEntity(entity);
            
            CloseableHttpResponse response = client.execute(httpPost);
            System.out.println("回复发送状态: " + response.getStatusLine());
            EntityUtils.consume(response.getEntity());
            client.close();
        }
    }

    @Data
    static class ReplyMessage {
        private String content;
        private long timestamp = System.currentTimeMillis();

        public ReplyMessage(String content) {
            this.content = content;
        }
    }
}
 com.momo.plugin;

import lombok.extern.slf4j.Slf4j;
import java.util.HashMap;
import java.util.Map;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

@Slf4j
public class MessageProcessor {
    private static final Map<String, String> KEYWORD_REPLIES = new HashMap<>();
    private static final Pattern URL_PATTERN = Pattern.compile(
        "https?:\\/\\/(www\\.)?[-a-zA-Z0-9@:%._\\+~#=]{1,256}\\.[a-zA-Z0-9()]{1,6}\\b([-a-zA-Z0-9()@:%_\\+.~#?&//=]*)"
    );

    static {
        // 初始化关键词回复
        KEYWORD_REPLIES.put("你好", "你好呀!有什么可以帮您的吗?");
        KEYWORD_REPLIES.put("谢谢", "不客气,这是我应该做的~");
        KEYWORD_REPLIES.put("帮助", "我是自动回复助手,可以回答简单问题");
        KEYWORD_REPLIES.put("时间", "当前系统时间: " + System.currentTimeMillis());
    }

    public String processMessage(String message) {
        if (message == null || message.trim().isEmpty()) {
            return "请发送有效内容";
        }

        // 检查URL
        if (containsUrl(message)) {
            return "检测到您发送了链接,请注意网络安全";
        }

        // 关键词匹配
        for (Map.Entry<String, String> entry : KEYWORD_REPLIES.entrySet()) {
            if (message.contains(entry.getKey())) {
                return entry.getValue();
            }
        }

        // 默认回复
        return "已收到您的消息: " + message;
    }

    private boolean containsUrl(String text) {
        Matcher matcher = URL_PATTERN.matcher(text);
        return matcher.find();
    }

    public void addCustomReply(String keyword, String reply) {
        KEYWORD_REPLIES.put(keyword, reply);
        log.info("已添加自定义回复: {} -> {}", keyword, reply);
    }
}
 com.momo.plugin;

import com.google.gson.Gson;
import com.google.gson.reflect.TypeToken;
import lombok.SneakyThrows;
import org.apache.commons.io.FileUtils;

import java.io.File;
import java.nio.charset.StandardCharsets;
import java.util.HashMap;
import java.util.Map;

public class ConfigManager {
    private static final String CONFIG_FILE = "config.json";
    private static final Gson gson = new Gson();
    private Map<String, Object> configMap = new HashMap<>();

    @SneakyThrows
    public ConfigManager() {
        File configFile = new File(CONFIG_FILE);
        if (configFile.exists()) {
            String content = FileUtils.readFileToString(configFile, StandardCharsets.UTF_8);
            configMap = gson.fromJson(content, new TypeToken<Map<String, Object>>(){}.getType());
        } else {
            // 默认配置
            configMap.put("autoReplyEnabled", true);
            configMap.put("replyInterval", 5);
            configMap.put("blacklist", new String[]{});
            saveConfig();
        }
    }

    public Object getConfig(String key) {
        return configMap.get(key);
    }

    public void setConfig(String key, Object value) {
        configMap.put(key, value);
        saveConfig();
    }

    @SneakyThrows
    private void saveConfig() {
        FileUtils.writeStringToFile(
            new File(CONFIG_FILE),
            gson.toJson(configMap),
            StandardCharsets.UTF_8
        );
    }
}

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
作者已关闭评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档