使用C#将字符串消息发送到IRC通道

时间:2015-08-24 03:03:55

标签: c# irc

所以我正在尝试使用C#制作一个简单的IRC机器人,我已成功连接到频道并可以接收和发送消息,问题是我试图发送的消息在第一个空格后被切断。我已经阅读了IRC Documentation,似乎无法找到任何指定某种格式的邮件发送的参考或注释,到目前为止我就是这样做的:

writer.WriteLine("PRIVMSG " + CHANNEL + " " + "Welcome back!");
                        writer.Flush(); 

虽然实际的消息来自变量,但无论哪种方式都不起作用。

1 个答案:

答案 0 :(得分:0)

你必须在消息之前使用冒号(:),例如,像这样 (并且最好使用string.Format):

import javafx.animation.AnimationTimer;
import javafx.application.Application;
import javafx.beans.property.BooleanProperty;
import javafx.beans.property.ObjectProperty;
import javafx.beans.property.SimpleBooleanProperty;
import javafx.beans.property.SimpleObjectProperty;
import javafx.geometry.Point2D;
import javafx.scene.Scene;
import javafx.scene.layout.Pane;
import javafx.stage.Stage;

public class TrackMouseStopped extends Application {

    private final long MIN_STATIONARY_TIME = 100_000_000 ; // nanoseconds 

    @Override
    public void start(Stage primaryStage) {
        Pane pane = new Pane();
        ObjectProperty<Point2D> mouseLocation = new SimpleObjectProperty<>(new Point2D(0, 0));
        pane.setOnMouseMoved(e -> mouseLocation.set(new Point2D(e.getX(), e.getY())));

        BooleanProperty mouseMoving = new SimpleBooleanProperty();
        mouseMoving.addListener((obs, wasMoving, isNowMoving) -> {
           if (! isNowMoving) {
               System.out.println("Mouse stopped!");
           }
        });

        AnimationTimer timer = new AnimationTimer() {
            private double lastMouseX ;
            private double lastMouseY ;
            long lastMouseMovement ;
            @Override
            public void handle(long timestamp) {
                double x = mouseLocation.get().getX();
                double y = mouseLocation.get().getY();
                if (Double.doubleToLongBits(lastMouseX) != Double.doubleToLongBits(x)
                    || Double.doubleToLongBits(lastMouseY) != Double.doubleToLongBits(y)) {
                    lastMouseMovement = timestamp ;
                }

                mouseMoving.set(timestamp - lastMouseMovement < MIN_STATIONARY_TIME);

                lastMouseX = x;
                lastMouseY = y;
            }
        };
        timer.start();

        Scene scene = new Scene(pane, 600, 600);
        primaryStage.setScene(scene);
        primaryStage.show();
    }

    public static void main(String[] args) {
        launch(args);
    }
}
相关问题