XChat 及相关组件使用声明及免责条款

版权声明

XChat 及相关组件(下简称为“XChat”)是由 这里是小邓(xiaodeng.tk) 独立编写的聊天软件,所有源码使用 MIT协议 授权。

隐私声明

XChat 不会收集和公开所以除 用户昵称、客户端信息(版本、类型、IP地址)、聊天记录 以外的用户信息,收集到的信息将被当前连接的服务器储存在日志文件中

免责声明

禁止将 XChat 用于 赌博、传播色情、诈骗等违法违规用途,否则产生的一切责任将有用户承担。开发者不承担任何用户造成的责任

XChat Server V1.2-beta

简介

版本:V1.2-beta

XChat Server 是软件 XChat 的服务端,可以让您在1分钟内拥有一个自己的 XChat 服务器。

依赖

  1. Python3
  2. rich

使用教程

  1. 安装依赖,打开 XChat Server
  2. 输入端口
  3. 完成

源代码

from rich.console import Console
import socket
import json
import threading
import time

console = Console()
threads = {}
messages = [
    {"from":"Server","msg":"Server Started","time":time.time()}
]
threadList = []
users = {}

def handle(sock, addr):
    global console, messages, threads, threadList, users
    msgid = 0
    username = ""

    while True:
        resp_data = {
            "code":200,
            "msg":"OK",
            "data":{}
        }

        recv_data = sock.recv(1024)
        try:
            recv_data = recv_data.decode("utf-8")
            recv_data = json.loads(recv_data)

            if username != "":
                if recv_data["mode"] == "getMsg":
                    try:
                        resp_data["data"]["messages"] = messages[msgid:]
                        msgid = messages.__len__()
                    except:
                        resp_data["data"]["messages"] = []
                elif recv_data["mode"] == "sendMsg":
                    messages += [
                        {
                            "from":username,
                            "msg":recv_data["data"]["msg"],
                            "time":time.time()
                        }
                    ]
                    console.log(f"[CHAT] <{username}> {recv_data['data']['msg']}")

                elif recv_data["mode"] == "exit":
                    sock.close()
                    return 0

                elif recv_data["mode"] == "getList":
                    userList = []
                    for t in threadList:
                        if threads[t].is_alive():
                            userList += [users[t].getName()]
                    resp_data["data"]["list"] = userList


                else:
                    resp_data["code"] = 404
                    resp_data["msg"] = "Unkown mode"

            elif recv_data["mode"] == "login":
                username = recv_data["data"]["username"]
                # threads[addr[1]].setName(username)
                users[addr[1]] = username

            else:
                resp_data["code"] = 403
                resp_data["msg"] = "Please Login First"


        except Exception as e:
            console.print_exception(show_locals=True)
            resp_data["code"] = 500
            resp_data["msg"] = "Internal Server Error"
            resp_data["data"]["exception"] = str(e)

        # 回复
        resp_data = json.dumps(resp_data)
        sock.send(resp_data.encode("utf-8"))



if __name__ == "__main__":
    port = int(console.input("[blue]Port: "))

    sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
    sock.bind(
        (
            "",
            port
        )
    )
    sock.listen(128)

    console.log(f"Server started on 0.0.0.0:{port}.")

    while True:
        s, addr = sock.accept()
        console.log(f"{addr[1]} connected to this server.")
        threadList += [addr[1]]
        users[addr[1]] = ""

        threads[addr[1]] = threading.Thread(None, lambda: handle(s, addr))
        threads[addr[1]].setDaemon(True)
        threads[addr[1]].start()

XChat-CLI pre-1

温馨提示:本文可能已经过时

XChat Client CLI

版本:pre-1

依赖

  1. Python3(Tested 3.10.6)
  2. rich

简介

XChat 是一个简单好用的聊天软件,它(指原版,给改了不关我事熬)不会收集任何除必须外的用户信息

测试服务器

  • IP:124.222.63.135
  • Port:19180

源代码

import socket
from rich.console import Console
import threading
import json
import time

console = Console()
sock = None
sockThread = None

def send(data):
    global sock
    sock.send(
        json.dumps(data).encode("utf-8")
    )

    return json.loads(
        sock.recv(1024).decode("utf-8")
    )

def getMsg():
    global sock, console
    while True:
        msg = send(
            {
                "mode":"getMsg",
                "data":{}
            }
        )
        try:
            for m in msg["data"]["messages"]:
                t = time.strftime(
                    "%H:%M:%S",
                    time.localtime(m["time"])
                )

                console.print(
                    f'[{t}]<[yellow]{m["from"]}[/]> {m["msg"]}'
                )
        except:
            pass

if __name__ == "__main__":
    console.print("[green]XChat CLI V1")
    sock = socket.socket(
            socket.AF_INET,
            socket.SOCK_STREAM
    )

    sock.connect(
        (
            console.input("[yellow]IP: "),
            int(console.input("[yellow]Port: "))
        )
    )

    loginRecv = send(
        {
            "mode":"login",
            "data":{
                "username":console.input(
                    "[yellow]User: "
                )
            }
        }
    )

    if loginRecv["code"] == 200:
        console.print(
            "[green]Server connected!"
        )

        sockThread = threading.Thread(
            None,
            getMsg
        )
        sockThread.start()

        while True:
            sendMsg = console.input("")
            send(
                {
                    "mode":"sendMsg",
                    "data":{
                        "msg":sendMsg
                    }
                }
            )

Mojang: Minecraft 1.19.1中可以举报玩家在聊天区中的不当发言

  • 更新日期:June 25th, 2022 Friday

Minecraft Wiki 原文

常规

社交屏幕

  • 现在可以在社交屏幕中举报玩家在聊天区中的不当发言。
    • 举报时可以选择多人游戏的聊天信息。
    • 可以在聊天举报类型中选择举报内容的分类,包括以下几种:
      • 对儿童的性剥削或虐待
        • 有人谈论或以其他方式宣扬涉及儿童的不当行为。
      • 诽谤、冒充他人或散布虚假信息
        • 有人以利用或误导他人为目的,损害他人名誉、冒充他人或散布虚假信息。
      • 吸毒或饮酒
        • 有人教唆他人涉毒或教唆未成年人饮酒。
      • 骚扰或霸凌
        • 有人羞辱、攻击、霸凌你或其他人。这包括在未经允许的情况下不断尝试联系你或其他人,或发布你或其他人的隐私信息。
      • 仇恨言论
        • 有人因身份要素(如宗教信仰、种族或性取向)攻击你或其他玩家。
      • 即将发生的伤害行为 — 自残或自杀
        • 有人威胁要自残或谈论现实生活中的自残行为。
      • 即将发生的伤害行为 — 威胁伤害他人
        • 有人威胁要在现实生活中伤害你或其他人。
      • 未经同意发布私密图像
        • 有人谈论、分享私密或亲密的图像,或以其他方式宣扬有关行为。
      • 恐怖主义或暴力极端主义
        • 有人因政治、宗教、意识形态或其他原因,谈论、宣扬、威胁实施恐怖主义或极端暴力行为。
    • 可附加评论以提供与举报相关的更多的细节和信息。
    • 被举报的玩家经过监督员审核并认定存在违规行为后会被封禁,从而无法进行在线游戏和加入Realms。
    • 被封禁的玩家进入游戏后会收到封禁通知,告知该玩家被封禁的原因和封禁时长。

——https://minecraft.fandom.com/zh/wiki/Java%E7%89%881.19.1?so=search

也就是说,你如果被举报, 的Minecraft正版账号就差不多8BQ了

解决方案

不要游玩 Minecraft 1.19.1 级以上

简单粗暴,不过……

使用 No Chat Report 模组(推荐)

This mod strips cryptographic signatures that since 1.19 are attached to every message sent in the chat. by Removing them makes it impossible to track and associate your chat messages with your Minecraft and, extension, Microsoft account. As of 1.19.1, it will also disable Player Chat Reporting.

——https://modrinth.com/mod/no-chat-reports

MOD介绍页:https://modrinth.com/mod/no-chat-reports


对于事件后续,我们也将持续关注

下面摘取 pcls 某群友一句话:

举报系统就nm是歌姬吧

——xiaohhya1234MUA(开学,跑路)
a href="https://minecraft.fandom.

XToolsBox+

温馨提示:本文可能已经过时

简介

XToolsBox+ 是一个可拓展的 Python3 小型工具箱,可跨 PC 几乎所有能跑 pygame 平台; 庞大(并不)的插件市场让它拥有了多样性的功能。

没有什么东西是一个插件解决不了的,如果有,那就改源代码(?)。