Nilcord

Nilcord

又一个 Minecraft 的 Discord 桥接

管理

从一个小众 Minecraft 版本的小众模组加载器的小众项目,如今已扩展到我个人关心的所有 Minecraft 版本!

Nilcord | 又一个 Minecraft 的 Discord 桥接模组

Nilcord 使用 Discord 机器人以及(可选的)Webhook,将你的 Minecraft 服务器聊天连接到指定的 Discord 文本频道。

安装

要设置该模组,只需将模组文件放入 mods 目录(若使用 NilLoader,则放入 nilmods),启动你的 Minecraft 服务器,然后等待其生成配置文件(并因其尚未填写而崩溃)。

配置文件名为 nilcord.toml,位于 config 文件夹中,内容相当直观易懂。

(默认配置)
# 与 Discord 本身相关的设置
[discord]
	# 要使用的 Discord 机器人令牌
	# default: 
	token = ""
	# 机器人发送消息到 / 接收消息的默认 Discord 频道 ID。与 send_to 和 receive_from 一起使用。可以为空!
	# default: 
	channel_id = ""
	# 机器人发送消息到的其他 Discord 频道 ID
	send_to = []
	# 机器人接收消息的其他 Discord 频道 ID
	receive_from = []

	# 与 Discord Webhook 相关的设置
	[discord.webhook]
		# 是否使用 Webhook 将玩家聊天消息发送到 Discord
		# default: false
		enabled = false
		# 要使用的 Webhook URL
		# default: 
		url = ""

# 与 Minecraft 本身相关的设置
[minecraft]
	# 是否允许在 Minecraft 中提及 Discord 用户
	# default: false
	enable_mentions = false
	# 是否允许在 Minecraft 中提及 @everyone 和 @here
	# default: false
	enable_everyone_and_here = false
	# 是否在游戏内显示 Discord 消息附件
	# default: true
	show_attachments = true
	# 是否在游戏内显示来自其他 Discord 机器人的消息
	# default: false
	show_bot_messages = false
	# 是否在游戏内显示来自 Discord Webhook 的消息
	# default: true
	show_webhook_messages = true
	# 要忽略其消息的应用程序 / 用户 ID
	ignored_ids = ["000000000000000000"]

# 与消息格式化相关的设置
[formatting]

	# 与在 Discord 中可见的消息相关的设置
	# 可用占位符:<displayname> <username>
	[formatting.discord]
		# 服务器启动中消息
		# 可用占位符:无
		# default: **Server starting...**
		server_starting_message = "**Server starting...**"
		# 服务器已启动消息
		# 可用占位符:无
		# default: **Server started!**
		server_started_message = "**Server started!**"
		# 服务器停止中消息
		# 可用占位符:无
		# default: **Server stopping...**
		server_stopping_message = "**Server stopping...**"
		# 服务器已停止消息
		# 可用占位符:无
		# default: **Server stopped!**
		server_stopped_message = "**Server stopped!**"
		# 服务器崩溃消息
		# 可用占位符:无
		# default: **Server crashed :(**
		server_crash_message = "**Server crashed :(**"
		# 玩家聊天消息
		# 额外占位符:<message>
		# default: **<<username>>** <message>
		chat_message = "**<<username>>** <message>"
		# 玩家加入消息
		# 额外占位符:无
		# default: > **<username> joined the game**
		join_message = "> **<username> joined the game**"
		# 玩家离开消息
		# 额外占位符:无
		# default: > **<username> left the game**
		leave_message = "> **<username> left the game**"
		# 玩家进度消息
		# 额外占位符:<advancement_description> <advancement_title>
		# default: > **<username>** has just earned the achievement **[<advancement_title>]**
		#> \> _<advancement_description>_
		advancement_fallback_message = "> **<username>** has just earned the achievement **[<advancement_title>]**\n> \\> _<advancement_description>_"
		# default: > **<username>** has completed the challenge **[<advancement_title>]**
		#> \> _<advancement_description>_
		advancement_challenge_message = "> **<username>** has completed the challenge **[<advancement_title>]**\n> \\> _<advancement_description>_"
		# default: > **<username>** has reached the goal **[<advancement_title>]**
		#> \> _<advancement_description>_
		advancement_goal_message = "> **<username>** has reached the goal **[<advancement_title>]**\n> \\> _<advancement_description>_"
		# default: > **<username>** has made the advancement **[<advancement_title>]**
		#> \> _<advancement_description>_
		advancement_task_message = "> **<username>** has made the advancement **[<advancement_title>]**\n> \\> _<advancement_description>_"
		# 玩家死亡消息
		# 额外占位符:<death_message>
		# default: **<username> died:** _<death_message>_
		death_message = "**<username> died:** _<death_message>_"

		# 与从 Webhook 发送的消息相关的设置(若启用)
		[formatting.discord.webhook]
			# 用于 Webhook 头像的 URL
			# 额外占位符:<skin_id> <skin_model> <uuid>
			# default: https://visage.surgeplay.com/bust/128/<skin_id>?<skin_model>
			avatar_url = "https://visage.surgeplay.com/bust/128/<skin_id>?<skin_model>"
			# Webhook 头像的默认皮肤 ID(若无法加载玩家的皮肤)
			# default: 31f477eb1a7beee631c2ca64d06f8f68fa93a3386d04452ab27f43acdf1b60cb
			default_skin_id = "31f477eb1a7beee631c2ca64d06f8f68fa93a3386d04452ab27f43acdf1b60cb"
			# Webhook 头像的默认皮肤模型(若无法加载玩家的皮肤)
			# default: wide
			default_skin_model = "wide"
			# Webhook 的用户名
			# 额外占位符:无
			# default: <username>
			username = "<username>"
			# 玩家聊天消息
			# 额外占位符:<message>
			# default: <message>
			chat_message = "<message>"

	# 与在 Minecraft 中可见的消息相关的设置
	# 可用占位符:<message> <message_url> <nickname> <role_color> <username>
	[formatting.minecraft]
		# Discord 消息
		# 额外占位符:<attachment_format> <discord_format> <reply_format> <username_format>
		# default: [Discord] <reply_format><click type:open_url value:'<message_url>'><<username_format>></click> <message><attachment_format>
		discord_message = "[Discord] <reply_format><click type:open_url value:'<message_url>'><<username_format>></click> <message><attachment_format>"
		# 用户名格式
		# 额外占位符:无
		# default: <hover type:show_text value:'@<username>'><color value:'<role_color>'><nickname></color></hover>
		username_format = "<hover type:show_text value:'@<username>'><color value:'<role_color>'><nickname></color></hover>"
		# 提及格式
		# 额外占位符:无
		# default: <underline><hover type:show_text value:'@<username>'>@<nickname></hover></underline>
		mention_format = "<underline><hover type:show_text value:'@<username>'>@<nickname></hover></underline>"
		# 回复格式
		# 额外占位符:<reply_message> <reply_nickname> <reply_role_color> <reply_url> <reply_username>
		# default: <click type:open_url value:'<reply_url>'><hover type:show_text value:'@<reply_username>: <reply_message>'>[<aqua>←</aqua><color value:'<reply_role_color>'><reply_nickname></color>]</hover></click> 
		reply_format = "<click type:open_url value:'<reply_url>'><hover type:show_text value:'@<reply_username>: <reply_message>'>[<aqua>←</aqua><color value:'<reply_role_color>'><reply_nickname></color>]</hover></click> "
		# 附件格式
		# 额外占位符:<attachment_url>
		# default: <click type:open_url value:'<attachment_url>'>[<aqua>Attachment</aqua>]</click>
		attachment_format = "<click type:open_url value:'<attachment_url>'>[<aqua>Attachment</aqua>]</click>"

(注意,这是 Nilcord 4.2+26.2+fabric 的配置文件。在其他版本上可能看起来有所不同。)

只有 token 和 channel_id 字段(在 discord 类别下)是严格必需填写的;其他所有内容模组都会回退到合理的默认值。但请随意按自己的喜好修改!

备注

要设置 Discord 应用程序(以获取机器人令牌),请遵循 discord.js 的指南:Setting up a bot application | discord.js Guide

要查找 Discord 频道的“Channel ID”,请遵循 Discord 的指南:Where can I find my User/Server/Message ID? - Discord

在 1.21.1 及以下版本中,Fabric 版本还可以使用 Simplified Text Format,以及由 Text Placeholder API 和支持它的各种模组提供的占位符。

在 1.21.2 及以上版本中,Fabric 版本还允许使用 QuickText。

在 1.20.4 以及 26.1 及以上版本中,NeoForge 版本也允许使用 Simplified Text Format 和 QuickText。

Forge 1.7.10 版本额外支持 ChromatiCraft 的进度消息,以及 ServerUtilities 的 AFK 消息。


有评论?问题?建议?要求?在问题追踪器上开一个 issue 吧!