Giter VIP home page Giter VIP logo

tgtalk-frontend's Introduction

TGTalk FrontEnd

As the name suggests, this is a front end to TGTalk.

This project originated from ChenYFan. Without him, this project would not exist.

本项目起源于 ChenYFan,如果没有他,这个项目不可能存在!

本项目由键盘和 AI 自动生成,本人没有义务对该项目引发的任何争议负责任

English | 中文(简体)

TGTalk supports Markdown rendering based on marked.js, but since Telegram automatically recognizes links (adding hyperlinks, escaping, etc.), the effect is not good

You can now use it normally! syntax and`syntax However, you can insert HTML tags into the talk, and it will be rendered normally by TGTalk

However, due to Telegram's ability to automatically identify links, you will not be able to use tags such as video and audio that require data from the outside

Usage the project(CDN)

If you have the ability, I recommend you write your own styles and templates, so that you can better control the display effect, in addition to this, you can better avoid style pollution (limit the style effect to the mount container)

Add the style file

<link
  rel="stylesheet"
  href="https://registry.npmmirror.com/@floatsheep/tg-talker/latest/files/dist/main.css"
/>

Add the init script and main script

<script>
  window.G_CONFIG = {
    api: "https://tgtalk.api.eurekac.cn", // A api that you deployed
    ref: "g-container", // A container that you want to mount it
    template: "default", // Choose "custom" or "default"
    zoom: true, // Enable Medium-Zoom
  };
</script>
<script src="https://registry.npmmirror.com/@floatsheep/tg-talker/latest/files/dist/index.js"></script>
<div id="g-container"></div> <!--You can choose the id-->
<button id="load-more">More</button> <!--A load more button-->

Use your template

If you want to use your template, you can choose custom in the template setting

And then, you should refer to the documentation of handlebars to add a template and make its id template

Just like this:

<script id="template" type ="text/x-handlebars-template">
...Your template
</script>
<script>
  window.G_CONFIG = {
    ...Your config
    template: "custom"
  }
</script>

Open Handlebars Helper

These are the Handlebars Helpers open in this project, which may help you if you want to write your own templates:

Name Way Effect
tagExtractor tagExtractor(text) Traverse and return tag in text
tagConverter tagConverter(text, renderTagList) Convert a tag to tags in tagList
contains contains(str, sub)
(contains text "Channel")
Determine if str includes sub
not not(value)
(not (contains text "Channel"))
Returns the opposite of a given value (true -> false / false -> true), can be used with #if
replaceImage replaceImage(originalLink)
{{ replaceImage this }}
Overwrite Image Link
replaceTime replaceTime(timestamp)
{{replaceTime time}}
Rewrite timestamp to local time
maskRender maskRender(text)
{{maskRender text}}
Convert Telegram mask in text to plugin-heimu
add add(a, b) Add a to b (number type)

Chinese

TGTalk 支持基于 marked.js 的 Markdown 渲染,但由于 Telegram 会自动识别链接(添加超链接、转义等),效果并不好

目前,你可以正常使用 ![]() 语法 和 []() 语法

但,你可以在说说中插入 HTML 标签,它将会被 TGTalk 正常渲染

尽管如此,受限于 Telegram 自动识别链接的功能,你将无法正常使用 video 和 audio 等需要从外部获取数据的标签

如果你有能力,我更推荐你自己编写样式和模板,这样你能更好控制显示效果,除此之外,你还能更好的避免样式污染(将样式生效范围限定在挂载容器之内)

添加样式文件

<link
  rel="stylesheet"
  href="https://registry.npmmirror.com/@floatsheep/tg-talker/latest/files/dist/main.css"
/>

添加初始化脚本和主要脚本

<script>
  window.G_CONFIG = {
    api: "https://tgtalk.api.eurekac.cn", // 你部署的 API
    ref: "g-container", // 你想要挂载的容器
    template: "default", // 选择 "custom" 或者 "default"
    zoom: true, // 启用 Medium-Zoom(点击图片放大)
  };
</script>
<script src="https://registry.npmmirror.com/@floatsheep/tg-talker/latest/files/dist/index.js"></script>
<div id="g-container"></div> <!--你可以更改ID-->
<button id="load-more">加载更多</button> <!--加载更多按钮-->

制定你的模板

如果你想要使用你的 Handlebars 模板,你可以在模板设置中选择 custom

然后你应该参照 Handlebars 的官方文档创建一个 ID 为 template 的模板,就像下面这样:

<script id="template" type ="text/x-handlebars-template">
...你的模板内容
</script>
<script>
  window.G_CONFIG = {
    ...你的配置
    template: "custom"
  }
</script>

开放的 Handlebars Helper

这些是本项目中开放的 Handlebars Helper,如果你要编写自己的模板,或许会对你有所帮助:

名字 使用方法 效果
tagExtractor tagExtractor(text) 遍历并返回 text 中的 tag
tagConverter tagConverter(text, renderTagList) 转换 a 标签为 tagList 中的 tags
contains contains(str, sub)
(contains text "Channel")
判断 str 中是否包括 sub
not not(value)
(not (contains text "Channel"))
返回给定值的相反值(true -> false / false -> true),可与 #if 连用
replaceImage replaceImage(originalLink)
{{ replaceImage this }}
覆写图片链接
replaceTime replaceTime(timestamp)
{{replaceTime time}}
重写时间戳为本地时间
maskRender maskRender(text)
{{maskRender text}}
转换文字中的 Telegram 遮罩为 plugin-heimu
add add(a, b) 将 a 与 b 相加(数字类型)

部署 API

访问 Gist,复制其中所有代码

进入 Cloudflare 仪表盘

选择创建应用程序 -> 创建 Worker -> 修改名称(部署)-> 编辑代码

在其中粘贴你复制的所有代码,并且修改 ChannelName 为你的频道名称,部署并访问 Worker 查看是否能正确返回内容

!如果不能返回内容,请将 nextBefore 一行更改为 Number((getDataFromTelegram.match(/data-before="([0-9]+)"/g) || ["0"])[0].match(/[0-9]+/g))

接着你可以为你的 Worker 绑定一个域名

image-20240323203711238

image-20240323203519290

image-20240323203802170

保存,然后将你绑定的域名填入配置中的 api 项即可

tgtalk-frontend's People

Contributors

floatsheep avatar

Stargazers

chihuo2104 avatar 鹊楠吖~ avatar 安小歪 avatar

Watchers

 avatar

Forkers

qnquenan

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.