discord.js - 识别链接中的部分并在嵌入中重新格式化它们
问题描述
我正在尝试创建从链接中识别站点名称和用户名的命令。例如使用!link https://en.wikipedia.org/wiki/User:Example
, !link https://en.wikipedia.org/wiki/Special:Contributions/Example
, or!link https://en.wikipedia.org/wiki/User_talk:Example
会创建一个嵌入
const embed = new Discord.MessageEmbed()
.setColor('#bf00ff')
.addTitle(`en.wikipedia.org`, [Wiki link](https://en.wikipedia.org/wiki/Main_Page))
.addField(`User info of Example`, `[Userpage](https://en.wikipedia.org/wiki/User:Example) | [User_talk](https://en.wikipedia.org/wiki/User_talk:Example) | [Logs](https://en.wikipedia.org/wiki/Special:Log/Example) | [User groups](https://en.wikipedia.org/wiki/Special:UserRights/Example) | [User contributions](https://en.wikipedia.org/wiki/Special:Contributions/Example) | [BlockLog](https://en.wikipedia.org/w/index.php?title=Special:Log/block&page=User:Example)
message.channel.send(embed)
此外,如果链接没有User:
、Special:Contributions/
或User_talk:
、 以及站点名称(例如en.wikipedia.org
)和其中的用户名,则创建错误消息。
如果链接包含用户名后面的 、 、 或 ,请忽略链接中的?useskin=monobook
那些?useskin=vector
部分?useskin=modern
。?useskin=apex
例如,https://en.wikipedia.org/wiki/User_talk:Example?useskin=vector
应该解释为https://en.wikipedia.org/wiki/User_talk:Example
,用户名也应该解释为Example
,而不是Example?useskin=vector
我怎么能做到这一点?
解决方案
推荐阅读
- mysql - 无法使用柴油箱从 mysql 数据库加载结果
- python - Python 3.7:未找到 Elasticsearch 模块
- google-cloud-firestore - Firestore - 通过撤销令牌管理用户会话
- ios - 机器学习套件人脸识别无法在 IOS 上运行
- laravel - 将 laravel 从 5.1 升级到 5.8 并且工匠命令在 laravel 5.1 中不起作用
- docker - 无法从本地 docker 注册表推/拉
- matlab - 如何在 MATLAB 中更新/动画一个复杂的图形?
- vba - 有谁知道通过 VBA 自动登录 SAP 的连接代码?
- javascript - 如何在 javascript 中使用 this.value 从下拉列表中检查特定值
- c - 程序在 EOF 上打印垃圾