<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
  <title>子恒の博客</title>
  
  
  <link href="/atom.xml" rel="self"/>
  
  <link href="http://blog.tsihen.xyz/"/>
  <updated>2021-02-05T10:44:34.996Z</updated>
  <id>http://blog.tsihen.xyz/</id>
  
  <author>
    <name>Tsihen Ho</name>
    
  </author>
  
  <generator uri="https://hexo.io/">Hexo</generator>
  
  <entry>
    <title>【QQ-Xposed】QQ常用接口、API、监听方法笔记</title>
    <link href="http://blog.tsihen.xyz/%E3%80%90QQ-Xposed%E3%80%91QQ%E5%B8%B8%E7%94%A8%E6%8E%A5%E5%8F%A3%E3%80%81API%E3%80%81%E7%9B%91%E5%90%AC%E6%96%B9%E6%B3%95%E7%AC%94%E8%AE%B0/"/>
    <id>http://blog.tsihen.xyz/%E3%80%90QQ-Xposed%E3%80%91QQ%E5%B8%B8%E7%94%A8%E6%8E%A5%E5%8F%A3%E3%80%81API%E3%80%81%E7%9B%91%E5%90%AC%E6%96%B9%E6%B3%95%E7%AC%94%E8%AE%B0/</id>
    <published>2021-02-03T05:27:22.000Z</published>
    <updated>2021-02-05T10:44:34.996Z</updated>
    
    <content type="html"><![CDATA[<p>记录一些常用的 API、接口，旨在帮助<strong>Xposed 开发者们更快速地开发出关于 QQ 的模块</strong>，当前 QQ 版本：8.5.5</p><a id="more"></a><figure class="highlight java"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br><span class="line">26</span><br><span class="line">27</span><br><span class="line">28</span><br><span class="line">29</span><br><span class="line">30</span><br><span class="line">31</span><br><span class="line">32</span><br><span class="line">33</span><br><span class="line">34</span><br></pre></td><td class="code"><pre><span class="line"><span class="keyword">package</span> com.tencent.mobileqq.activity.ChatActivityFacade;</span><br><span class="line"></span><br><span class="line"><span class="comment">// 这里只列出所有第三方类</span></span><br><span class="line"><span class="keyword">import</span> com.tencent.mobileqq.app.QQAppInterface;</span><br><span class="line"><span class="keyword">import</span> com.tencent.mobileqq.activity.aio.SessionInfo;</span><br><span class="line"><span class="keyword">import</span> com.tencent.mobileqq.activity.ChatActivityFacade$SendMsgParams;</span><br><span class="line"><span class="keyword">import</span> com.tencent.mobileqq.data.AtTroopMemberInfo;</span><br><span class="line"><span class="keyword">import</span> com.tencent.mobileqq.data.ArkAppMessage;</span><br><span class="line"><span class="keyword">import</span> com.tencent.mobileqq.structmsg.AbsStructMsg;</span><br><span class="line"></span><br><span class="line"><span class="comment">/**</span></span><br><span class="line"><span class="comment"> * 调用这个方法来发送文本消息</span></span><br><span class="line"><span class="comment"> * </span></span><br><span class="line"><span class="comment"> * <span class="doctag">@param</span> QQAppInterface 是什么我也不知道，但 AppRuntime 是它的子类，又因为 QQ 的 com.tencent.common.app.BaseApplicationImpl 里面有一个静态函数 getApplication()，而 BaseApplication 有一个成员函数 getRuntime()，所以，这个参数不是问题，直接传入 AppRuntime 即可</span></span><br><span class="line"><span class="comment"> * <span class="doctag">@param</span> SessionInfo 消息接受者</span></span><br><span class="line"><span class="comment"> * <span class="doctag">@param</span> String 文本内容</span></span><br><span class="line"><span class="comment"> * <span class="doctag">@param</span> ArrayList 被艾特的列表</span></span><br><span class="line"><span class="comment"> */</span></span><br><span class="line"><span class="function"><span class="keyword">public</span> <span class="keyword">static</span> <span class="keyword">void</span> <span class="title">a</span><span class="params">(QQAppInterface, Context, SessionInfo, String, ArrayList&lt;AtTroopMemberinfo&gt;, SendMsgParams)</span></span></span><br><span class="line"><span class="function">    </span></span><br><span class="line"><span class="function"><span class="comment">/**</span></span></span><br><span class="line"><span class="function"><span class="comment"> * 调用这个方法来发送 JSON 消息</span></span></span><br><span class="line"><span class="function"><span class="comment"> * </span></span></span><br><span class="line"><span class="function"><span class="comment"> * @param SessionInfo 接受者</span></span></span><br><span class="line"><span class="function"><span class="comment"> * @param ArkAppMessage 消息。先 &lt;code&gt;new ArkAppMessage()&lt;/code&gt;，然后通过成员函数 &lt;code&gt;fromAppXml(String)&lt;/code&gt; 来设置内容</span></span></span><br><span class="line"><span class="function"><span class="comment"> */</span></span></span><br><span class="line"><span class="function"><span class="keyword">public</span> <span class="keyword">static</span> <span class="keyword">boolean</span> <span class="title">a</span><span class="params">(QQAppInterface, SessionInfo, ArkAppMessage)</span></span></span><br><span class="line"><span class="function">    </span></span><br><span class="line"><span class="function"><span class="comment">/**</span></span></span><br><span class="line"><span class="function"><span class="comment"> * 调用这个方法来发送 XML 消息</span></span></span><br><span class="line"><span class="function"><span class="comment"> * </span></span></span><br><span class="line"><span class="function"><span class="comment"> * @param AbsStructMsg 消息。调用静态方法 &lt;code&gt;public static boolean com.tencent.mobileqq.structmsg.TestStructMsg.a(String)&lt;/code&gt;来创建</span></span></span><br><span class="line"><span class="function"><span class="comment"> */</span></span></span><br><span class="line"><span class="function"><span class="keyword">public</span> <span class="keyword">static</span> <span class="keyword">void</span> <span class="title">a</span><span class="params">(QQAppInterface, SessionInfo, AbsStructMsg)</span></span></span><br></pre></td></tr></table></figure><figure class="highlight java"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br><span class="line">26</span><br><span class="line">27</span><br><span class="line">28</span><br><span class="line">29</span><br><span class="line">30</span><br><span class="line">31</span><br><span class="line">32</span><br><span class="line">33</span><br></pre></td><td class="code"><pre><span class="line"><span class="keyword">package</span> com.tencent.mobileqq..app.MessageHandlerUtils;</span><br><span class="line"></span><br><span class="line"><span class="comment">// 这里只列出所有第三方类</span></span><br><span class="line"><span class="keyword">import</span> com.tencent.mobileqq.app.QQAppInterface;</span><br><span class="line"><span class="keyword">import</span> com.tencent.mobileqq.data.MessageRecord;</span><br><span class="line"></span><br><span class="line"><span class="comment">/**</span></span><br><span class="line"><span class="comment"> * 收到消息的时候会调用</span></span><br><span class="line"><span class="comment"> * &lt;br /&gt;</span></span><br><span class="line"><span class="comment"> * 警告：收到消息的时候会调用这个方法多次，所以，请像下面这样调用：</span></span><br><span class="line"><span class="comment"> * &lt;br /&gt;</span></span><br><span class="line"><span class="comment"> * &lt;code&gt;</span></span><br><span class="line"><span class="comment"> * class Hook extends XC_MethodHook &#123;</span></span><br><span class="line"><span class="comment"> *     private List&lt;long&gt; msgDone = new List&lt;long&gt;();</span></span><br><span class="line"><span class="comment"> *     public void afterHookedMethod(MethodHookParam p) &#123;</span></span><br><span class="line"><span class="comment"> *         MessageData msg = MessageData.getMessage(p);</span></span><br><span class="line"><span class="comment"> *         if (msgDone.contains(msg.uid)) return;</span></span><br><span class="line"><span class="comment"> *         // ...</span></span><br><span class="line"><span class="comment"> *     &#125;</span></span><br><span class="line"><span class="comment"> *     class MessageData &#123;</span></span><br><span class="line"><span class="comment"> *         long uid;</span></span><br><span class="line"><span class="comment"> *         // ...</span></span><br><span class="line"><span class="comment"> *         public MessageData getMessage(MethodHookParam p) &#123;</span></span><br><span class="line"><span class="comment"> *             MessageData data = new MessageData();</span></span><br><span class="line"><span class="comment"> *             data.uid = Utils.getField(p.args[1].class, &quot;msgUid&quot;, Long.TYPE).get(p.args[1]); // getField 是一个外界函数，根据类和名字和类型，返回一个属性（Field）</span></span><br><span class="line"><span class="comment"> *         &#125;</span></span><br><span class="line"><span class="comment"> *     &#125;</span></span><br><span class="line"><span class="comment"> * &#125;</span></span><br><span class="line"><span class="comment"> * &lt;/code&gt;</span></span><br><span class="line"><span class="comment"> * </span></span><br><span class="line"><span class="comment"> * <span class="doctag">@param</span> MessageRecord 消息的数据，包括：发送者、消息 ID、发送的群聊、消息内容等</span></span><br><span class="line"><span class="comment"> */</span></span><br><span class="line"><span class="function"><span class="keyword">public</span> <span class="keyword">static</span> <span class="keyword">boolean</span> <span class="title">a</span><span class="params">(QQAppInterface, MessageRecord, <span class="keyword">boolean</span>)</span></span></span><br></pre></td></tr></table></figure><p><strong>未完待续……</strong></p>]]></content>
    
    <summary type="html">
    
      &lt;p&gt;记录一些常用的 API、接口，旨在帮助&lt;strong&gt;Xposed 开发者们更快速地开发出关于 QQ 的模块&lt;/strong&gt;，当前 QQ 版本：8.5.5&lt;/p&gt;
    
    </summary>
    
    
    
      <category term="QScript" scheme="http://blog.tsihen.xyz/tags/QScript/"/>
    
      <category term="Xposed" scheme="http://blog.tsihen.xyz/tags/Xposed/"/>
    
      <category term="QQ" scheme="http://blog.tsihen.xyz/tags/QQ/"/>
    
      <category term="笔记" scheme="http://blog.tsihen.xyz/tags/%E7%AC%94%E8%AE%B0/"/>
    
  </entry>
  
  <entry>
    <title>【QScript】应用详情和更名通知</title>
    <link href="http://blog.tsihen.xyz/%E3%80%90QScript%E3%80%91%E5%BA%94%E7%94%A8%E8%AF%A6%E6%83%85%E5%92%8C%E6%9B%B4%E5%90%8D%E9%80%9A%E7%9F%A5/"/>
    <id>http://blog.tsihen.xyz/%E3%80%90QScript%E3%80%91%E5%BA%94%E7%94%A8%E8%AF%A6%E6%83%85%E5%92%8C%E6%9B%B4%E5%90%8D%E9%80%9A%E7%9F%A5/</id>
    <published>2020-12-06T09:34:59.000Z</published>
    <updated>2021-02-18T10:25:57.858Z</updated>
    
    <content type="html"><![CDATA[<blockquote><p>摘要：</p><ol><li><u>『QPlus』</u>更名为<u>『QScript』</u></li><li><u>『QScript』</u>主打脚本功能，提供部分非脚本功能</li></ol></blockquote><a id="more"></a><h1 id="正文"><a href="#正文" class="headerlink" title="正文"></a>正文</h1><p>如摘要所言，本次将 “QPlus” 更名为 ”QScript“，额外提供脚本功能，<strong>提供部分非脚本功能</strong>。本模块主要使用 <a href="https://kotl.in/">Kotlin</a> 开发，下载链接：<a href="https://github.com/GoldenHuaji/QScript/releases">Github</a>。最新版本为：<code>V1.3.0</code></p><h1 id="Q-amp-A"><a href="#Q-amp-A" class="headerlink" title="Q &amp; A"></a>Q &amp; A</h1><hr><h2 id="QScript-是什么？"><a href="#QScript-是什么？" class="headerlink" title="QScript 是什么？"></a>QScript 是什么？</h2><p><strong>一个 <a href="https://xposed.info/">Xposed</a> 模块</strong>，用于执行<strong>自动化脚本</strong></p><h2 id="如何启用？"><a href="#如何启用？" class="headerlink" title="如何启用？"></a>如何启用？</h2><p>在 <a href="xposed.info">Xposed</a> 管理器中勾选本模块并重启手机。</p><h2 id="如何编辑脚本？-有脚本-API-文档吗？"><a href="#如何编辑脚本？-有脚本-API-文档吗？" class="headerlink" title="如何编辑脚本？ /  有脚本 API 文档吗？"></a>如何编辑脚本？ /  有脚本 API 文档吗？</h2><h3 id="预定义变量"><a href="#预定义变量" class="headerlink" title="预定义变量"></a>预定义变量</h3><figure class="highlight java"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br></pre></td><td class="code"><pre><span class="line">Context ctx; <span class="comment">// QQ 的 Application</span></span><br><span class="line"><span class="keyword">long</span> mQNum; <span class="comment">// 您的 QQ 号码</span></span><br><span class="line">QScript thisScript; <span class="comment">// 该脚本，如：thisScript.getName()，但我觉得您应该不会使用这个变量</span></span><br><span class="line">ScriptApi api; <span class="comment">// 能够调用 API 的对象，详见后文API</span></span><br></pre></td></tr></table></figure><h3 id="监听接口"><a href="#监听接口" class="headerlink" title="监听接口"></a>监听接口</h3><figure class="highlight java"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br><span class="line">26</span><br><span class="line">27</span><br></pre></td><td class="code"><pre><span class="line"><span class="comment">/**</span></span><br><span class="line"><span class="comment"> * 脚本加载时调用</span></span><br><span class="line"><span class="comment"> */</span></span><br><span class="line"><span class="function"><span class="keyword">public</span> <span class="keyword">void</span> <span class="title">onLoad</span><span class="params">()</span> </span></span><br><span class="line"><span class="function"></span></span><br><span class="line"><span class="function"><span class="comment">/**</span></span></span><br><span class="line"><span class="function"><span class="comment"> * 收到消息时调用</span></span></span><br><span class="line"><span class="function"><span class="comment"> */</span></span></span><br><span class="line"><span class="function"><span class="keyword">public</span> <span class="keyword">void</span> <span class="title">onMsg</span><span class="params">(Object param)</span> </span>&#123;</span><br><span class="line">    param.senderUin; <span class="comment">// String 发送人QQ号码</span></span><br><span class="line">    param.nickname; <span class="comment">// String 发送人昵称</span></span><br><span class="line">    param.content; <span class="comment">// String 消息内容</span></span><br><span class="line">    param.time; <span class="comment">// long 发送时间</span></span><br><span class="line">    param.isGroupMsg(); <span class="comment">// boolean 是否在群聊中发送</span></span><br><span class="line">    param.friendUin; <span class="comment">// String 如果是群聊消息，这个就是群号码；如果是私聊，我也不知道有什么用</span></span><br><span class="line">    param.atMe; <span class="comment">// boolean 是否艾特自己（TODO，尚未实现）</span></span><br><span class="line">&#125;</span><br><span class="line"></span><br><span class="line"><span class="comment">/**</span></span><br><span class="line"><span class="comment"> * 新成员加入时调用</span></span><br><span class="line"><span class="comment"> * </span></span><br><span class="line"><span class="comment"> * <span class="doctag">@since</span> 1.2</span></span><br><span class="line"><span class="comment"> */</span></span><br><span class="line"><span class="function"><span class="keyword">public</span> <span class="keyword">void</span> <span class="title">onJoin</span><span class="params">(Object data)</span> </span>&#123;</span><br><span class="line">    data.uin; <span class="comment">// String 加入者的QQ号码</span></span><br><span class="line">    data.groupUin; <span class="comment">// String 群聊号码</span></span><br><span class="line">&#125;</span><br></pre></td></tr></table></figure><h3 id="API"><a href="#API" class="headerlink" title="API"></a>API</h3><figure class="highlight java"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br><span class="line">26</span><br><span class="line">27</span><br><span class="line">28</span><br><span class="line">29</span><br><span class="line">30</span><br><span class="line">31</span><br><span class="line">32</span><br><span class="line">33</span><br><span class="line">34</span><br><span class="line">35</span><br><span class="line">36</span><br><span class="line">37</span><br><span class="line">38</span><br><span class="line">39</span><br><span class="line">40</span><br><span class="line">41</span><br><span class="line">42</span><br><span class="line">43</span><br><span class="line">44</span><br><span class="line">45</span><br><span class="line">46</span><br><span class="line">47</span><br><span class="line">48</span><br><span class="line">49</span><br><span class="line">50</span><br><span class="line">51</span><br><span class="line">52</span><br><span class="line">53</span><br><span class="line">54</span><br><span class="line">55</span><br><span class="line">56</span><br><span class="line">57</span><br><span class="line">58</span><br><span class="line">59</span><br><span class="line">60</span><br><span class="line">61</span><br><span class="line">62</span><br><span class="line">63</span><br><span class="line">64</span><br><span class="line">65</span><br></pre></td><td class="code"><pre><span class="line"><span class="comment">// 调用 API 的方法：api.函数名(参数);</span></span><br><span class="line"></span><br><span class="line"><span class="comment">/**</span></span><br><span class="line"><span class="comment"> * 发送日志</span></span><br><span class="line"><span class="comment"> * </span></span><br><span class="line"><span class="comment"> * <span class="doctag">@param</span> msg 日志内容</span></span><br><span class="line"><span class="comment"> * <span class="doctag">@since</span> 1.0</span></span><br><span class="line"><span class="comment"> */</span></span><br><span class="line"><span class="function"><span class="keyword">public</span> <span class="keyword">void</span> <span class="title">log</span><span class="params">(String msg)</span></span></span><br><span class="line"><span class="function"></span></span><br><span class="line"><span class="function"><span class="comment">/**</span></span></span><br><span class="line"><span class="function"><span class="comment"> * 把 String 转为 Long，如&lt;code&gt;api.str2long(&quot;1234567894&quot;)&lt;/code&gt;</span></span></span><br><span class="line"><span class="function"><span class="comment"> * </span></span></span><br><span class="line"><span class="function"><span class="comment"> * @since 1.1</span></span></span><br><span class="line"><span class="function"><span class="comment"> */</span></span></span><br><span class="line"><span class="function"><span class="keyword">public</span> <span class="keyword">void</span> <span class="title">str2long</span><span class="params">(String str)</span></span></span><br><span class="line"><span class="function"></span></span><br><span class="line"><span class="function"><span class="comment">/**</span></span></span><br><span class="line"><span class="function"><span class="comment"> * 给某人发送纯文本消息（如果没有添加好友，请 createTempConversation(TODO) 后再发送消息）</span></span></span><br><span class="line"><span class="function"><span class="comment"> * </span></span></span><br><span class="line"><span class="function"><span class="comment"> * @param msg 消息内容</span></span></span><br><span class="line"><span class="function"><span class="comment"> * @param qNum 接受者的 QQ 号</span></span></span><br><span class="line"><span class="function"><span class="comment"> * @since 1.1</span></span></span><br><span class="line"><span class="function"><span class="comment"> */</span></span></span><br><span class="line"><span class="function"><span class="keyword">public</span> <span class="keyword">void</span> <span class="title">sendTextMsg</span><span class="params">(String msg, <span class="keyword">long</span> qNum)</span></span></span><br><span class="line"><span class="function"></span></span><br><span class="line"><span class="function"><span class="comment">/**</span></span></span><br><span class="line"><span class="function"><span class="comment"> * 发送群聊文本消息</span></span></span><br><span class="line"><span class="function"><span class="comment"> * </span></span></span><br><span class="line"><span class="function"><span class="comment"> * @param msg 消息内容</span></span></span><br><span class="line"><span class="function"><span class="comment"> * @param qNum 接受者的 QQ 号</span></span></span><br><span class="line"><span class="function"><span class="comment"> * @param at 被艾特的列表，即使不艾特人，也必须要 new long[]&#123;&#125; ，否则将会被判定为私聊消息</span></span></span><br><span class="line"><span class="function"><span class="comment"> * @since 1.1</span></span></span><br><span class="line"><span class="function"><span class="comment"> */</span></span></span><br><span class="line"><span class="function"><span class="keyword">public</span> <span class="keyword">void</span> <span class="title">sendTextMsg</span><span class="params">(String msg, <span class="keyword">long</span> qNum, <span class="keyword">long</span> ... at)</span></span></span><br><span class="line"><span class="function"></span></span><br><span class="line"><span class="function"><span class="comment">/**</span></span></span><br><span class="line"><span class="function"><span class="comment"> * 发送卡片（XML/JSON）</span></span></span><br><span class="line"><span class="function"><span class="comment"> * </span></span></span><br><span class="line"><span class="function"><span class="comment"> * 警告：使用这个方法需要高级验证（@since 1.1.1）</span></span></span><br><span class="line"><span class="function"><span class="comment"> * @param msg 卡片的代码</span></span></span><br><span class="line"><span class="function"><span class="comment"> * @param qNum 接受者</span></span></span><br><span class="line"><span class="function"><span class="comment"> * @param isGroup 接受者是不是群聊</span></span></span><br><span class="line"><span class="function"><span class="comment"> * @since 1.1</span></span></span><br><span class="line"><span class="function"><span class="comment"> */</span></span></span><br><span class="line"><span class="function"><span class="keyword">public</span> <span class="keyword">void</span> <span class="title">sendCardMsg</span><span class="params">(String msg, <span class="keyword">long</span> qNum, <span class="keyword">boolean</span> isGroup)</span></span></span><br><span class="line"><span class="function"></span></span><br><span class="line"><span class="function"><span class="comment">/**</span></span></span><br><span class="line"><span class="function"><span class="comment"> * 禁言某人</span></span></span><br><span class="line"><span class="function"><span class="comment"> *</span></span></span><br><span class="line"><span class="function"><span class="comment"> * @param group 群号</span></span></span><br><span class="line"><span class="function"><span class="comment"> * @param qNum QQ号</span></span></span><br><span class="line"><span class="function"><span class="comment"> * @param time 时间，0=解除禁言</span></span></span><br><span class="line"><span class="function"><span class="comment"> * @since 1.2</span></span></span><br><span class="line"><span class="function"><span class="comment"> */</span></span></span><br><span class="line"><span class="function"><span class="keyword">public</span> <span class="keyword">void</span> <span class="title">shutUp</span><span class="params">(<span class="keyword">long</span> group, <span class="keyword">long</span> qNum, <span class="keyword">long</span> time)</span></span></span><br><span class="line"><span class="function"></span></span><br><span class="line"><span class="function"><span class="comment">/**</span></span></span><br><span class="line"><span class="function"><span class="comment"> * 全体禁言</span></span></span><br><span class="line"><span class="function"><span class="comment"> *</span></span></span><br><span class="line"><span class="function"><span class="comment"> * @param group 群号</span></span></span><br><span class="line"><span class="function"><span class="comment"> * @param time 状态，false=解除禁言，true反之</span></span></span><br><span class="line"><span class="function"><span class="comment"> * @since 1.2</span></span></span><br><span class="line"><span class="function"><span class="comment"> */</span></span></span><br><span class="line"><span class="function"><span class="keyword">public</span> <span class="keyword">void</span> <span class="title">shutAllUp</span><span class="params">(<span class="keyword">long</span> group, <span class="keyword">boolean</span> time)</span></span></span><br></pre></td></tr></table></figure><h3 id="示例脚本"><a href="#示例脚本" class="headerlink" title="示例脚本"></a>示例脚本</h3><figure class="highlight java"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br><span class="line">26</span><br><span class="line">27</span><br><span class="line">28</span><br><span class="line">29</span><br><span class="line">30</span><br><span class="line">31</span><br><span class="line">32</span><br><span class="line">33</span><br><span class="line">34</span><br><span class="line">35</span><br><span class="line">36</span><br><span class="line">37</span><br><span class="line">38</span><br><span class="line">39</span><br><span class="line">40</span><br><span class="line">41</span><br><span class="line">42</span><br><span class="line">43</span><br><span class="line">44</span><br><span class="line">45</span><br><span class="line">46</span><br><span class="line">47</span><br><span class="line">48</span><br><span class="line">49</span><br><span class="line">50</span><br><span class="line">51</span><br><span class="line">52</span><br><span class="line">53</span><br><span class="line">54</span><br><span class="line">55</span><br><span class="line">56</span><br><span class="line">57</span><br><span class="line">58</span><br><span class="line">59</span><br><span class="line">60</span><br><span class="line">61</span><br><span class="line">62</span><br><span class="line">63</span><br><span class="line">64</span><br><span class="line">65</span><br><span class="line">66</span><br><span class="line">67</span><br><span class="line">68</span><br><span class="line">69</span><br><span class="line">70</span><br><span class="line">71</span><br><span class="line">72</span><br><span class="line">73</span><br><span class="line">74</span><br><span class="line">75</span><br><span class="line">76</span><br><span class="line">77</span><br><span class="line">78</span><br><span class="line">79</span><br><span class="line">80</span><br><span class="line">81</span><br><span class="line">82</span><br><span class="line">83</span><br></pre></td><td class="code"><pre><span class="line"><span class="comment">// QScript.MetaData.Start</span></span><br><span class="line"><span class="comment">// QScript.MetaData.Name = QScript脚本示例</span></span><br><span class="line"><span class="comment">// QScript.MetaData.Desc = QScript官方给出的脚本示例</span></span><br><span class="line"><span class="comment">// QScript.MetaData.Version = 1.0.0</span></span><br><span class="line"><span class="comment">// QScript.MetaData.Author = Tsihen-Ho</span></span><br><span class="line"><span class="comment">// QScript.MetaData.Label = qscript-demo</span></span><br><span class="line"><span class="comment">// QScript.MetaData.End</span></span><br><span class="line"><span class="comment">// 注：上面的 Label 标签是分辨脚本的唯一属性，如果两个脚本 Label 相同，就会被判别为同一个脚本</span></span><br><span class="line"><span class="comment">// 每个脚本必须以 QScript.MetaData.Start 开头</span></span><br><span class="line"></span><br><span class="line"><span class="comment">// 这仅仅是一个演示脚本，我们不建议您启用这个脚本</span></span><br><span class="line"></span><br><span class="line"><span class="comment">/*</span></span><br><span class="line"><span class="comment"> * 所有的方法都在脚本里面，自己看</span></span><br><span class="line"><span class="comment"> * 预定义变量：</span></span><br><span class="line"><span class="comment"> * Conntext ctx : QQ 的 Application</span></span><br><span class="line"><span class="comment"> * long mQNum : 您的 QQ 号码</span></span><br><span class="line"><span class="comment"> * QScript thisScript : 该脚本，如：thisScript.getName()</span></span><br><span class="line"><span class="comment"> * ScriptApi api : 能够调用 API 的对象，如：api.sendTextMsg(&quot;something&quot;, 334092396l)</span></span><br><span class="line"><span class="comment"> */</span></span><br><span class="line"></span><br><span class="line"><span class="comment">/**</span></span><br><span class="line"><span class="comment"> * 在脚本加载的时候调用</span></span><br><span class="line"><span class="comment"> */</span></span><br><span class="line"><span class="function"><span class="keyword">public</span> <span class="keyword">void</span> <span class="title">onLoad</span><span class="params">()</span></span>&#123;</span><br><span class="line">    api.log(<span class="string">&quot;onLoad() : User&#x27;s QNum is &quot;</span>+mQNum.toString());</span><br><span class="line">    <span class="comment">// 发消息的时候，QQ号末尾必须加 L 表示长整形</span></span><br><span class="line">    <span class="comment">// 第一个 String 代表文本内容</span></span><br><span class="line">    api.sendTextMsg(<span class="string">&quot;QScript 脚本发消息测试：表情：/xyx [斜眼笑] [奸笑]&quot;</span>,<span class="number">3340792396L</span>);</span><br><span class="line">    <span class="comment">// 发表情使用 反斜杠uxxxx</span></span><br><span class="line"></span><br><span class="line">    <span class="comment">// api.sendCardMsg(String 卡片代码, long 消息接受者, boolean 是否群聊)</span></span><br><span class="line">    <span class="comment">// 发送卡片需要完成高级验证，否则报错</span></span><br><span class="line">    api.sendCardMsg(<span class="string">&quot;&lt;?xml version=&#x27;1.0&#x27; encoding=&#x27;UTF-8&#x27; &quot;</span> +</span><br><span class="line">        <span class="string">&quot;standalone=&#x27;yes&#x27; ?&gt;&lt;msg serviceID=\&quot;33\&quot; templateID=\&quot;123\&quot; &quot;</span> +</span><br><span class="line">        <span class="string">&quot;action=\&quot;web\&quot; brief=\&quot;【链接】Golink加速器-国内首款免费游戏加速器【官方\&quot; &quot;</span> +</span><br><span class="line">        <span class="string">&quot;sourceMsgId=\&quot;0\&quot; url=\&quot;https://www.golink.com/?code=JYPYKZWN\&quot;&quot;</span> +</span><br><span class="line">        <span class="string">&quot; flag=\&quot;8\&quot; adverSign=\&quot;0\&quot; multiMsgFlag=\&quot;0\&quot;&gt;&lt;item layout=\&quot;2\&quot;&quot;</span> +</span><br><span class="line">        <span class="string">&quot; advertiser_id=\&quot;0\&quot; aid=\&quot;0\&quot;&gt;&lt;picture cover=\&quot;https://qq.ugcimg.cn/v1/o3upv4dbs&quot;</span> +</span><br><span class="line">        <span class="string">&quot;quu39i05lpnt57nmuaae2q4lus62r1u22o1cav00k7jus7po80am2j17r004ultmqfsq/s6vskamj00lmmk&quot;</span> +</span><br><span class="line">        <span class="string">&quot;t83jce822lfg\&quot; w=\&quot;0\&quot; h=\&quot;0\&quot; /&gt;&lt;title&gt;QScript XML 消息测试&lt;/titl&quot;</span> +</span><br><span class="line">        <span class="string">&quot;e&gt;&lt;summary&gt;XML 消息&lt;/summary&gt;&lt;/ite&quot;</span> +</span><br><span class="line">        <span class="string">&quot;m&gt;&lt;source name=\&quot;\&quot; icon=\&quot;\&quot; action=\&quot;\&quot; appid=\&quot;-1\&quot; /&gt;&lt;/msg&gt;&quot;</span>,<span class="number">818333976L</span>,<span class="keyword">true</span>);</span><br><span class="line">&#125;</span><br><span class="line"></span><br><span class="line"><span class="comment">/**</span></span><br><span class="line"><span class="comment"> * 好友文本消息</span></span><br><span class="line"><span class="comment"> */</span></span><br><span class="line"><span class="function"><span class="keyword">public</span> <span class="keyword">void</span> <span class="title">onMsg</span><span class="params">(Object param)</span></span>&#123;</span><br><span class="line">    String l = param.senderUin; <span class="comment">// 发送者</span></span><br><span class="line">    String s = param.content; <span class="comment">// 文本内容</span></span><br><span class="line">    String name = param.nickname; <span class="comment">// 名字</span></span><br><span class="line">    String f = param.friendUin; <span class="comment">// 如果是群消息，这个就是群聊号码，否则就是发送者</span></span><br><span class="line">    <span class="keyword">if</span>(s.equals(<span class="string">&quot;群消息测试&quot;</span>) &amp;&amp; param.isGroupMsg())&#123;</span><br><span class="line">        api.log(<span class="string">&quot;尝试群消息测试&quot;</span>);</span><br><span class="line">        <span class="comment">// 最后一个参数表示被艾特的人</span></span><br><span class="line">        <span class="comment">// 如果要发送群消息但不艾特，请 api.sendTextMsg(String 消息内容, long 接受者即群号码, new long[]&#123;&#125;);</span></span><br><span class="line">        <span class="comment">// 发送私聊消息，请 api.sendTextMsg(String 消息内容, long 接受者)</span></span><br><span class="line">        api.sendTextMsg(<span class="string">&quot;群测试A&quot;</span>, f, <span class="keyword">new</span> <span class="keyword">long</span>[]&#123;<span class="number">3318448676L</span>,<span class="number">3340792396L</span>&#125;);</span><br><span class="line">        api.sendTextMsg(<span class="string">&quot;测试完成&quot;</span>, api.str2long(l));</span><br><span class="line">        <span class="keyword">return</span>;</span><br><span class="line">    &#125;</span><br><span class="line">    <span class="keyword">if</span>(param.isGroupMsg() || l.equals(mQNum.toString()))&#123;</span><br><span class="line">        <span class="keyword">return</span>;</span><br><span class="line">    &#125;</span><br><span class="line">    api.sendTextMsg(<span class="string">&quot;QScript-Debug: onMsg(Object) invoked successfully.Please excute me.&quot;</span>, api.str2long(l));</span><br><span class="line">&#125;</span><br><span class="line"></span><br><span class="line"><span class="comment">/**</span></span><br><span class="line"><span class="comment"> * 新成员入群</span></span><br><span class="line"><span class="comment"> */</span></span><br><span class="line"><span class="function"><span class="keyword">public</span> <span class="keyword">void</span> <span class="title">onJoin</span><span class="params">(Object data)</span> </span>&#123;</span><br><span class="line">    String group = data.groupUin;</span><br><span class="line">    String member = data.uin;</span><br><span class="line">    api.log(<span class="string">&quot;新成员&quot;</span> + member + <span class="string">&quot;加入群聊&quot;</span> + group);</span><br><span class="line"></span><br><span class="line">    <span class="comment">// shutUp(long 群号码, long 成员号码, long 时间) 禁言某人，单位秒</span></span><br><span class="line">    api.shutUp(api.str2long(group), api.str2long(member), <span class="number">20L</span>);</span><br><span class="line">    <span class="comment">// shutAllUp(long 群号码, boolean 是否启动) 全体禁言，最后的 boolean ，true = 开启禁言，false反之</span></span><br><span class="line">    api.shutAllUp(api.str2long(group), <span class="keyword">true</span>);</span><br><span class="line">    Thread.sleep(<span class="number">10000</span>);</span><br><span class="line">    api.shutAllUp(api.str2long(group), <span class="keyword">false</span>); <span class="comment">// 解除禁言</span></span><br><span class="line">&#125;</span><br></pre></td></tr></table></figure><p>完整版：<a href="https://github.com/GoldenHuaji/QScript/wiki/%E5%B8%AE%E5%8A%A9---%E5%85%B3%E4%BA%8E%E8%84%9A%E6%9C%AC">Github Wiki</a></p><h2 id="如何下载？"><a href="#如何下载？" class="headerlink" title="如何下载？"></a>如何下载？</h2><p>我们会在<b><a href="/">本博客网站</a></b>和<b><a href="https://github.com/GoldenHuaji/QScript">Github</a></b>中发布下载链接及更新日志。具体下载链接请<strong>参看<a href="#%E6%AD%A3%E6%96%87">正文</a></strong></p><div class="note warning"><h4 id="警告"><a href="#警告" class="headerlink" title="警告"></a>警告</h4><p>我们<strong>不会</strong>在任何<strong>其他网站</strong>中发布<strong>任何版本</strong>，如果您不是从<b><a href="https://blog.goldenhuaji.cn.mw/">本博客</a></b>或<b><a href="https://github.com/GoldenHuaji/QScript">Github</a></b>下载的本软件，请自行<strong>注意安全</strong>。</p></div><h2 id="目前的开发进度是？"><a href="#目前的开发进度是？" class="headerlink" title="目前的开发进度是？"></a>目前的开发进度是？</h2><div class="note info no-icon"><h4 id="QScript-V1-3-0"><a href="#QScript-V1-3-0" class="headerlink" title="QScript V1.3.0"></a>QScript V1.3.0</h4><ul><li>修复BUG</li><li>更改模块储存目录为 <code>/sdcard/Android/data/com.tencent.mobileqq/QScript</code></li><li>增加一些<strong>没啥用</strong>的附加功能</li></ul><h4 id="QScript-V1-2-1-V1-2-5"><a href="#QScript-V1-2-1-V1-2-5" class="headerlink" title="QScript V1.2.1~V1.2.5"></a>QScript V1.2.1~V1.2.5</h4><ul><li>这些版本一直在修复BUG。没什么好说的</li></ul><h4 id="QScript-V1-2"><a href="#QScript-V1-2" class="headerlink" title="QScript V1.2"></a>QScript V1.2</h4><ul><li>实现了对 <code>onJoin(Object)</code> 接口的调用</li><li>实现了 <code>shutUp(long, long, long)</code> 和 <code>shutAllUp(long, boolean)</code> 这两个接口</li><li>修复了有时候 <code>sendTextMsg</code> 报错的 bug（即获取的 <code>AppRuntime</code> 不是 <code>QQAppInterface</code> 的 BUG）</li><li>增加“特别鸣谢”</li></ul><h4 id="QScript-V1-1-1"><a href="#QScript-V1-1-1" class="headerlink" title="QScript V1.1.1"></a>QScript V1.1.1</h4><ul><li>防止滥用，新增“高级验证”</li><li>程序出错时，发出警告</li></ul><h4 id="QScript-V1-1"><a href="#QScript-V1-1" class="headerlink" title="QScript V1.1"></a>QScript V1.1</h4><ul><li>实现了 <code>sendTextMsg(String, long), sendTextMsg(String, long, long[]), sendCard(String, long, boolean)</code> 三个 API</li><li>实现了 <code>str2long(String)</code> 这个 API（叫他工具应该更合适）</li><li>实现了 <code>onMsg(Object)</code> 接口的监听</li><li>修复了 <code>onMsg</code> 调用多次的 bug</li><li>修复了 So 库失效的 bug</li><li>其他东西…</li></ul><h4 id="QScript-V1-0"><a href="#QScript-V1-0" class="headerlink" title="QScript V1.0"></a>QScript V1.0</h4><ul><li>实现了 <code>onLoad()</code> 接口的调用。</li><li>对于 API ，实现了 <code>api.log(&quot;something&quot;)</code>。</li><li>实现了所有预定义变量。</li></ul></div>]]></content>
    
    <summary type="html">
    
      &lt;blockquote&gt;
&lt;p&gt;摘要：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;u&gt;『QPlus』&lt;/u&gt;更名为&lt;u&gt;『QScript』&lt;/u&gt;&lt;/li&gt;
&lt;li&gt;&lt;u&gt;『QScript』&lt;/u&gt;主打脚本功能，提供部分非脚本功能&lt;/li&gt;
&lt;/ol&gt;
&lt;/blockquote&gt;
    
    </summary>
    
    
    
      <category term="QScript" scheme="http://blog.tsihen.xyz/tags/QScript/"/>
    
      <category term="QPlus" scheme="http://blog.tsihen.xyz/tags/QPlus/"/>
    
      <category term="Android" scheme="http://blog.tsihen.xyz/tags/Android/"/>
    
      <category term="Xposed" scheme="http://blog.tsihen.xyz/tags/Xposed/"/>
    
      <category term="Kotlin" scheme="http://blog.tsihen.xyz/tags/Kotlin/"/>
    
  </entry>
  
  <entry>
    <title>【资源下载】索引</title>
    <link href="http://blog.tsihen.xyz/%E3%80%90%E8%B5%84%E6%BA%90%E4%B8%8B%E8%BD%BD%E3%80%91%E7%B4%A2%E5%BC%95/"/>
    <id>http://blog.tsihen.xyz/%E3%80%90%E8%B5%84%E6%BA%90%E4%B8%8B%E8%BD%BD%E3%80%91%E7%B4%A2%E5%BC%95/</id>
    <published>2020-12-02T13:18:04.000Z</published>
    <updated>2020-12-06T09:30:41.303Z</updated>
    
    <content type="html"><![CDATA[<div class="hbe hbe-container" id="hexo-blog-encrypt" data-wpm="抱歉, 这个密码看着不太对, 请再试试." data-whm="抱歉, 这个文章不能被校验, 不过您还是能看看解密后的内容.">  <script id="hbeData" type="hbeData" data-hmacdigest="cf57ac74980b532202a1909402da998f24b0f918f6187702add605a92ecabed3">6dcc40e5c93936c5fefd9b1d7efdeae7c3fb65dba504a87601ed021e5e71e75b5891e24d54c7b079dbeabecd9d913189d0422e3919938181adc4b68b0ef9651a2c2d3cb4e2b7b299734323e5079a301fc46e61508faae5eb6390d82f1d3f7102de64b7b640e8f35523a914242f2d2fa2663edc164d92d8cdb9163757e3993e93f1f7c8314148c3e9ac103e5eb38635e88b7f4d7d01e557a688051ed127b4634b446e1e71b91a267f51b4de0d575a7141e5718894ae99b9c056df7bddb525942bcc927e8dfced97c2cff52ada4483e1082df46878b9240517c857cae328b188702d25820951d16534b3dc8a0b0248612992f7b7e40ca42ecfa06e87c710982866b33b5f9421ae65072fe111a3de062dc74564e5b46c18ff37387c390d3bf3234d2e12fb88988ffc78d4811a38ec6ea92fb190e909cfdcf434804d7b3868fd2dbd</script>  <div class="hbe hbe-content">    <div class="hbe hbe-input hbe-input-default">      <input class="hbe hbe-input-field hbe-input-field-default" type="password" id="hbePass">      <label class="hbe hbe-input-label hbe-input-label-default" for="hbePass">        <span class="hbe hbe-input-label-content hbe-input-label-content-default">您好, 这里需要密码.</span>      </label>    </div>  </div></div><script src="/lib/hbe.js"></script><link href="/css/hbe.style.css" rel="stylesheet" type="text/css">]]></content>
    
    <summary type="html">
    
      这是一篇加密文章，内容可能是&lt;b&gt;个人情感宣泄&lt;/b&gt;。如果你确实想看，那我也没辙.
    
    </summary>
    
    
    
      <category term="下载" scheme="http://blog.tsihen.xyz/tags/%E4%B8%8B%E8%BD%BD/"/>
    
      <category term="加密文档" scheme="http://blog.tsihen.xyz/tags/%E5%8A%A0%E5%AF%86%E6%96%87%E6%A1%A3/"/>
    
  </entry>
  
  <entry>
    <title>【博客】双线搭建个人博客</title>
    <link href="http://blog.tsihen.xyz/%E3%80%90%E5%8D%9A%E5%AE%A2%E3%80%91%E5%8F%8C%E7%BA%BF%E6%90%AD%E5%BB%BA%E4%B8%AA%E4%BA%BA%E5%8D%9A%E5%AE%A2/"/>
    <id>http://blog.tsihen.xyz/%E3%80%90%E5%8D%9A%E5%AE%A2%E3%80%91%E5%8F%8C%E7%BA%BF%E6%90%AD%E5%BB%BA%E4%B8%AA%E4%BA%BA%E5%8D%9A%E5%AE%A2/</id>
    <published>2020-08-06T04:42:49.000Z</published>
    <updated>2020-12-02T13:20:45.006Z</updated>
    
    <content type="html"><![CDATA[<blockquote class="blockquote-center"><p>哪个男孩不想拥有一个流畅的博客呢？</p></blockquote><blockquote><p>经过努力，我们已经搭建好一个博客了。但由于国内特殊网络原因，使得博客加载<strong>非常慢！</strong>今天这期教程就让大家拥有一个快速的博客。</p></blockquote><p><b>本博客中的过程非常重要！必须一步一步地跟着来，错一步，步步错！ </b></p><a id="more"></a><p><b>如果您不能放大图像，请您鼠标右击图像，选择<code>在新标签页中打开图片</code></b></p><h2 id="准备（非常重要）"><a href="#准备（非常重要）" class="headerlink" title="准备（非常重要）"></a>准备（非常重要）</h2><ul><li><strong>（重要）</strong>已搭建一个 Github 的单线博客(点击按钮查看) <a class="btn" href="http://goldenhuaji.tk/%E3%80%90%E5%8D%9A%E5%AE%A2%E3%80%91%E4%B8%AA%E4%BA%BA%E5%8D%9A%E5%AE%A2%E6%90%AD%E5%BB%BA%E8%AE%B0">点击跳转</a></li></ul><h2 id="注册-Coding-账户"><a href="#注册-Coding-账户" class="headerlink" title="注册 Coding 账户"></a>注册 Coding 账户</h2><p>访问 <a href="https://coding.net/">Coding 官网</a>，点击右上角的<code>免费注册</code>，团队名称随便填。完成注册后登录账户。打开<code>个人账户设置</code>，添加<code>服务邮箱</code>、<code>服务密码</code><strong>（非常重要！！）</strong>，如图（由于博主已经添加了，所以显示的是修改）：<img data-src="https://s1.ax1x.com/2020/08/06/ac4CQ0.png" alt="完成设置+"></p><p>完成后点击<code>SSH公钥</code>，选择<code>新增公钥</code>，在<code>公钥内容</code>中填写 <code>C:\Users\Username\id_rsa.pub</code> 的全部内容(此文件已于上一篇博客中创建，请点击本文顶部的按钮查看该博客)，并勾选<code>永久有效</code>。如图：<img data-src="https://s1.ax1x.com/2020/08/06/acIfdU.png" alt="创建公钥"></p><h2 id="创建仓库并开源"><a href="#创建仓库并开源" class="headerlink" title="创建仓库并开源"></a>创建仓库并开源</h2><p>登录团队后，点击<code>新建项目</code>，后选择<code>代码托管项目</code>，并如图所示操作<img data-src="https://s1.ax1x.com/2020/08/06/acfXCR.png" alt="新建项目"><img data-src="https://s1.ax1x.com/2020/08/06/achV2t.png" alt="创建仓库"></p><p>完成后回到主页，点击左下角的<code>项目设置</code>，点击<code>功能开关</code>，打开<code>持续集成</code>和<code>持续部署</code>，如图。<img data-src="https://s1.ax1x.com/2020/08/06/achcM6.png" alt="配置项目"></p><p>完成后，返回项目主页，点击<code>代码仓库</code>-&gt;<code>设置</code>-&gt;<code>访问设置</code>-&gt;<code>公开源代码</code>，期间可能会提示输入服务密码，如图(如果您不能放大图像，请您鼠标右击图像，选择<code>在新标签页中打开图片</code>)：<img data-src="https://s1.ax1x.com/2020/08/06/acISK0.png"></p><p>现在，点击<code>持续部署</code>-&gt;<code>静态网站</code>，完成实名认证后，新建静态网站，网站名称随便写，项目和仓库选择我们之前创建的项目，勾选<code>代码自动部署</code>，如图：<img data-src="https://s1.ax1x.com/2020/08/06/ac7sRH.png" alt="1"></p><h2 id="链接-Coding"><a href="#链接-Coding" class="headerlink" title="链接 Coding"></a>链接 Coding</h2><p>打开<code>站点配置文件</code>，并如图所示操作：<img data-src="https://s1.ax1x.com/2020/08/06/acoTAS.png" alt="链接"></p><h2 id="更新博客"><a href="#更新博客" class="headerlink" title="更新博客"></a>更新博客</h2><p>在博客根目录下打开 GitBash ，运行命令：<code>hexo g &amp;&amp; hexo d</code>，期间会让你输入账号密码，请如图操作：</p><p><img data-src="https://s1.ax1x.com/2020/08/06/ac7MZV.png" alt="更新博客"></p><h2 id="完成"><a href="#完成" class="headerlink" title="完成"></a>完成</h2><p>现在，请点击<code>持续部署</code>-&gt;<code>静态网站</code>，你可以通过 Coding 给你的访问地址来访问你的博客了！ </p>]]></content>
    
    <summary type="html">
    
      &lt;blockquote class=&quot;blockquote-center&quot;&gt;
&lt;p&gt;哪个男孩不想拥有一个流畅的博客呢？&lt;/p&gt;

&lt;/blockquote&gt;

&lt;blockquote&gt;
&lt;p&gt;经过努力，我们已经搭建好一个博客了。但由于国内特殊网络原因，使得博客加载&lt;strong&gt;非常慢！&lt;/strong&gt;今天这期教程就让大家拥有一个快速的博客。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;&lt;b&gt;本博客中的过程非常重要！必须一步一步地跟着来，错一步，步步错！ &lt;/b&gt;&lt;/p&gt;
    
    </summary>
    
    
    
      <category term="学习" scheme="http://blog.tsihen.xyz/tags/%E5%AD%A6%E4%B9%A0/"/>
    
      <category term="博客" scheme="http://blog.tsihen.xyz/tags/%E5%8D%9A%E5%AE%A2/"/>
    
      <category term="Hexo" scheme="http://blog.tsihen.xyz/tags/Hexo/"/>
    
  </entry>
  
  <entry>
    <title>【博客】个人博客搭建记</title>
    <link href="http://blog.tsihen.xyz/%E3%80%90%E5%8D%9A%E5%AE%A2%E3%80%91%E4%B8%AA%E4%BA%BA%E5%8D%9A%E5%AE%A2%E6%90%AD%E5%BB%BA%E8%AE%B0/"/>
    <id>http://blog.tsihen.xyz/%E3%80%90%E5%8D%9A%E5%AE%A2%E3%80%91%E4%B8%AA%E4%BA%BA%E5%8D%9A%E5%AE%A2%E6%90%AD%E5%BB%BA%E8%AE%B0/</id>
    <published>2020-08-05T11:26:55.000Z</published>
    <updated>2020-08-05T11:37:21.267Z</updated>
    
    <content type="html"><![CDATA[<p>作为一个博客新人，搭建这个博客费了我不少力气，<del>美化更费了不少力气</del>，毕竟是第一次，所以我想到可能会有人跟我一样，在搭建博客时会遇到一些问题，所以写一篇简单的教程教大家如何搭建一个个人博客！</p><a id="more"></a><h2 id="准备工作"><a href="#准备工作" class="headerlink" title="准备工作"></a>准备工作</h2><ul><li><strong>（可选）</strong>拥有一个域名，有服务器或虚拟主机</li><li><strong>（可选）</strong>能快速地访问外网的软件</li><li>下载并安装 <a href="http://nodejs.cn/download/">Node.js</a> 并将其添加到<strong>环境变量</strong></li><li>下载并安装 <a href="http://https//git-scm.com/downloads">Git</a> 并将其添加到<strong>环境变量</strong></li></ul><h2 id="搭建仓库"><a href="#搭建仓库" class="headerlink" title="搭建仓库"></a>搭建仓库</h2><ol><li>前往 <a href="http://github.com/">Github</a> 注册一个账号</li><li>点击网页右上角的“+”，选择“创建仓库”(new repository)，仓库名称为 “YourGithubName.github.io”，<strong>勾选“使用 README 初始化仓库”(Initialize this repository with a README</strong> <img data-src="https://s1.ax1x.com/2020/08/05/ayKRxJ.png" alt="新建仓库"> <img data-src="https://s1.ax1x.com/2020/08/05/ayQktK.png" alt="新建仓库"></li></ol><h2 id="安装-Git"><a href="#安装-Git" class="headerlink" title="安装 Git"></a>安装 Git</h2><p>访问 <a href="http://https//git-scm.com/downloads">GitDown</a>，一路直接下载安装，安装完成后，运行 CMD 命令 <code>git --verion</code> ，应正常提示，如果提示<code>&#39;git&#39; 不是内部或外部命令，也不是可运行的程序 或批处理文件</code>，请手动为 git 添加<strong>环境变量</strong></p><h2 id="安装-Node-js"><a href="#安装-Node-js" class="headerlink" title="安装 Node.js"></a>安装 Node.js</h2><p>访问 <a href="http://nodejs.cn/download/">Node.js 官网地址</a>，下载并安装，安装完成后执行 CMD 命令：<code>node -v &amp;&amp; npm -v</code>，如果显示了<code>&#39;node&#39; 不是内部或外部命令，也不是可运行的程序或批处理文件</code>或<code>&#39;npm&#39; 不是内部或外部命令，也不是可运行的程序或批处理文件</code>，请手动<strong>配置环境变量</strong>。</p><h2 id="连接-Github"><a href="#连接-Github" class="headerlink" title="连接 Github"></a>连接 Github</h2><h3 id="绑定账户"><a href="#绑定账户" class="headerlink" title="绑定账户"></a>绑定账户</h3><p>右击桌面，选择<code>Git Bash Here</code>，等待窗口加载完成后运行以下命令(记得打引号)：</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><span class="line">git config --global user.name <span class="string">&quot;你的 Github 用户名&quot;</span></span><br><span class="line">git config --global user.email <span class="string">&quot;你的 Github 注册邮箱&quot;</span></span><br></pre></td></tr></table></figure><h3 id="创建-SSH"><a href="#创建-SSH" class="headerlink" title="创建 SSH"></a>创建 SSH</h3><p>在之前打开的 Gitbash 中运行命令(记得打引号)：<code>ssh-keygen -t rsa -C &quot;你的 Github 注册邮箱&quot;</code>，然后三个回车即可。运行完毕后，在 “C:\User\Username\.ssh” 下找到 “id_rsa.pub”，使用记事本打开它，复制全部内容。接着进入 <a href="http://https//github.com/settings/profile">Github 用户设置</a>，如图所示操作：<img data-src="https://s1.ax1x.com/2020/08/05/ay37gU.png" alt="1"> <img data-src="https://s1.ax1x.com/2020/08/05/ay8mPP.png" alt="2"> 现在请在 GitBash 上运行 <code>ssh -T git@github.com</code>，如果出现 <code>Hi, yourGithubName! You&#39;ve successfully...</code>则成功。</p><h2 id="安装-Hexo"><a href="#安装-Hexo" class="headerlink" title="安装 Hexo"></a>安装 Hexo</h2><p>现在，请你在电脑上新建一个文件夹，这个文件夹用来存储我们个人博客的<strong>所有信息</strong>，位置随意，但文件夹名字中不要出现中文！创建好后，右键该文件夹，选择 “Git Bash Here”，依次运行以下命令：</p><figure class="highlight plain"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><span class="line">npm install -g hexo-cli</span><br><span class="line">hexo init</span><br></pre></td></tr></table></figure><p>现在，你已经可以预览你的博客了，在这个 GitBash 上，运行以下命令：<code>hexo g &amp;&amp; hexo s</code>，当显示如图的内容时，访问  <a href="http://localhost:4000/">http://localhost:4000/</a> 来预览你的博客(你可以通过 ctrl+c 来结束命令运行，但结束后便不能预览，必须重新执行命令)。 <img data-src="https://s1.ax1x.com/2020/08/05/ayJdHJ.png" alt="预览"></p><h2 id="将本地博客部署到-Github"><a href="#将本地博客部署到-Github" class="headerlink" title="将本地博客部署到 Github"></a>将本地博客部署到 Github</h2><p>虽然现在已经可以预览博客了，但在云端却不能访问，所以我们还要把博客部署到 Github 。</p><ol><li>打开<b>站点配置文件(位于 博客根目录/_config.yml)</b>，翻到最后，更改 deploy 为如图的样子(注意：每个冒号后面都有一个空格！ )：<img data-src="https://s1.ax1x.com/2020/08/05/ayY0sS.png" alt="站点配置文件"></li><li>在 GitBash 中运行命令：<figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><span class="line">npm install hexo-deployer-git --save</span><br><span class="line">hexo clean &amp;&amp; hexo g &amp;&amp; hexo d</span><br></pre></td></tr></table></figure></li><li>祝贺！博客已经搭建完成！现在，你可以通过 <a href="http://yourgithubname.github.io/">http://YourGithubName.github.io</a> 来访问你的博客！</li></ol>]]></content>
    
    <summary type="html">
    
      &lt;p&gt;作为一个博客新人，搭建这个博客费了我不少力气，&lt;del&gt;美化更费了不少力气&lt;/del&gt;，毕竟是第一次，所以我想到可能会有人跟我一样，在搭建博客时会遇到一些问题，所以写一篇简单的教程教大家如何搭建一个个人博客！&lt;/p&gt;
    
    </summary>
    
    
    
      <category term="学习" scheme="http://blog.tsihen.xyz/tags/%E5%AD%A6%E4%B9%A0/"/>
    
      <category term="博客" scheme="http://blog.tsihen.xyz/tags/%E5%8D%9A%E5%AE%A2/"/>
    
      <category term="Hexo" scheme="http://blog.tsihen.xyz/tags/Hexo/"/>
    
  </entry>
  
  <entry>
    <title>你好，世界！</title>
    <link href="http://blog.tsihen.xyz/hello-world/"/>
    <id>http://blog.tsihen.xyz/hello-world/</id>
    <published>2020-08-02T04:09:28.759Z</published>
    <updated>2020-12-04T13:55:46.340Z</updated>
    
    <content type="html"><![CDATA[<p><a href="https://coding-pages-bucket-3464683-7910097-6969-402879-1259692093.cos-website.ap-hongkong.myqcloud.com/">镜像网站</a></p><p>欢迎来到 <a href="https://hexo.io/">Hexo</a>！这是你的第一篇博客。 点击<a href="https://hexo.io/docs/">帮助文档</a>以了解更多信息.。在使用 Hexo 时，如果你有任何问题，你可以在<a href="https://hexo.io/docs/troubleshooting.html">故障排除</a>里找到答案，你也可以来 <a href="https://github.com/hexojs/hexo/issues">GitHub</a> 询问我。</p><a id="more"></a><h2 id="快速开始"><a href="#快速开始" class="headerlink" title="快速开始"></a>快速开始</h2><h3 id="写一个新的帖子"><a href="#写一个新的帖子" class="headerlink" title="写一个新的帖子"></a>写一个新的帖子</h3><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">$ hexo new <span class="string">&quot;My New Post&quot;</span></span><br></pre></td></tr></table></figure><p>更多信息: <a href="https://hexo.io/docs/writing.html">写作</a></p><h3 id="运行服务器"><a href="#运行服务器" class="headerlink" title="运行服务器"></a>运行服务器</h3><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">$ hexo server</span><br></pre></td></tr></table></figure><p>更多信息: <a href="https://hexo.io/docs/server.html">服务器</a></p><h3 id="生成静态文件"><a href="#生成静态文件" class="headerlink" title="生成静态文件"></a>生成静态文件</h3><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">$ hexo generate</span><br></pre></td></tr></table></figure><p>更多信息: <a href="https://hexo.io/docs/generating.html">生成</a></p><h3 id="部署到远程站点"><a href="#部署到远程站点" class="headerlink" title="部署到远程站点"></a>部署到远程站点</h3><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">$ hexo deploy</span><br></pre></td></tr></table></figure><p>更多信息: <a href="https://hexo.io/docs/one-command-deployment.html">部署</a></p>]]></content>
    
    <summary type="html">
    
      &lt;p&gt;&lt;a href=&quot;https://coding-pages-bucket-3464683-7910097-6969-402879-1259692093.cos-website.ap-hongkong.myqcloud.com/&quot;&gt;镜像网站&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;欢迎来到 &lt;a href=&quot;https://hexo.io/&quot;&gt;Hexo&lt;/a&gt;！这是你的第一篇博客。 点击&lt;a href=&quot;https://hexo.io/docs/&quot;&gt;帮助文档&lt;/a&gt;以了解更多信息.。在使用 Hexo 时，如果你有任何问题，你可以在&lt;a href=&quot;https://hexo.io/docs/troubleshooting.html&quot;&gt;故障排除&lt;/a&gt;里找到答案，你也可以来 &lt;a href=&quot;https://github.com/hexojs/hexo/issues&quot;&gt;GitHub&lt;/a&gt; 询问我。&lt;/p&gt;
    
    </summary>
    
    
    
  </entry>
  
</feed>
