如何实现将字符串转换为盲文的Discord命令?
核心实现逻辑
- 首先搭建标准ASCII字符到盲文Unicode编码的映射关系:盲文符号的Unicode区段为
U+2800 ~ U+28FF,常用的小写字母、数字、标点都有对应固定编码,大写字母需在对应小写盲文前添加大写标识符U+2820,数字需添加数字标识符U+283C - 预处理用户输入:过滤不可见控制字符,保留可见字符、空格、标点
- 逐字符遍历匹配映射,未匹配到的特殊字符统一替换为空白盲文
U+2800 - 拼接所有转换后的盲文字符直接输出,Discord原生支持Unicode盲文字符渲染,无需额外处理
基于discord.py v2.x的可运行示例代码
import discord from discord import app_commands # 简化版基础映射表,可按需扩展标点、特殊符号 braille_map = { 'a': '⠁', 'b': '⠃', 'c': '⠉', 'd': '⠙', 'e': '⠑', 'f': '⠋', 'g': '⠛', 'h': '⠓', 'i': '⠊', 'j': '⠚', 'k': '⠅', 'l': '⠇', 'm': '⠍', 'n': '⠝', 'o': '⠕', 'p': '⠏', 'q': '⠟', 'r': '⠗', 's': '⠎', 't': '⠞', 'u': '⠥', 'v': '⠧', 'w': '⠺', 'x': '⠭', 'y': '⠽', 'z': '⠵', '1': '⠁', '2': '⠃', '3': '⠉', '4': '⠙', '5': '⠑', '6': '⠋', '7': '⠛', '8': '⠓', '9': '⠊', '0': '⠚', ' ': ' ' } # 大写标识符、数字标识符 CAPS_MARK = '⠠' NUM_MARK = '⠼' intents = discord.Intents.default() client = discord.Client(intents=intents) tree = app_commands.CommandTree(client) @tree.command(name="盲文转换", description="将输入的文本转换为盲文符号") async def convert_to_braille(interaction: discord.Interaction, 输入文本: str): result = [] in_number_sequence = False for char in 输入文本: if char.isupper(): result.append(CAPS_MARK) result.append(braille_map.get(char.lower(), '⠀')) in_number_sequence = False elif char.isdigit(): if not in_number_sequence: result.append(NUM_MARK) in_number_sequence = True result.append(braille_map.get(char, '⠀')) else: result.append(braille_map.get(char.lower(), '⠀')) in_number_sequence = False await interaction.response.send_message(''.join(result)) @client.event async def on_ready(): await tree.sync() print(f"登录成功: {client.user}") client.run("你的Bot Token")
常见问题排查(对应修改摩尔斯代码失败的原因)
- 摩尔斯电码的映射输出是由点、划、空格组成的普通字符串,盲文输出是独立的Unicode字符,直接复用摩尔斯代码的映射表结构但未替换对应字符值会导致输出异常
- 盲文的数字、大写需要额外添加前置标识符,不是和普通字符一一对应,未处理该逻辑会导致盲文含义错误
- 部分旧版Discord库不支持直接发送Unicode特殊字符,升级到discord.py v2.x以上版本即可解决
内容的提问来源于stack exchange,提问作者phantom
相关产品推荐
相关产品推荐

