mirror of
https://github.com/Eyre-S/Coeur-Morny-Cono.git
synced 2024-11-22 03:04:54 +08:00
为 local bot api server 设定提供支持 #33
This commit is contained in:
parent
b35b0600dc
commit
538167dfa9
@ -1,6 +1,6 @@
|
||||
## Core
|
||||
|
||||
VERSION = 0.7.0.15
|
||||
VERSION = 0.7.0.16
|
||||
|
||||
CODENAME = fuzhou
|
||||
|
||||
|
@ -4,7 +4,7 @@ package cc.sukazyo.cono.morny;
|
||||
* the final field that will be updated by gradle automatically.
|
||||
*/
|
||||
public class GradleProjectConfigures {
|
||||
public static final String VERSION = "0.7.0.15";
|
||||
public static final String VERSION = "0.7.0.16";
|
||||
public static final String CODENAME = "fuzhou";
|
||||
public static final long COMPILE_TIMESTAMP = 1653968380239L;
|
||||
public static final long COMPILE_TIMESTAMP = 1654058419036L;
|
||||
}
|
||||
|
@ -8,6 +8,7 @@ import cc.sukazyo.cono.morny.daemon.MornyDaemons;
|
||||
import cc.sukazyo.cono.morny.daemon.TrackerDataManager;
|
||||
import cc.sukazyo.untitled.telegram.api.extra.ExtraAction;
|
||||
import com.pengrad.telegrambot.TelegramBot;
|
||||
import com.pengrad.telegrambot.impl.FileApi;
|
||||
import com.pengrad.telegrambot.model.User;
|
||||
import com.pengrad.telegrambot.request.GetMe;
|
||||
|
||||
@ -82,6 +83,7 @@ public class MornyCoeur {
|
||||
* 单位为毫秒
|
||||
*/
|
||||
private MornyCoeur (
|
||||
@Nullable String botApi, @Nullable String botApi4File,
|
||||
@Nonnull String botKey, @Nullable String botUsername,
|
||||
long master, long trustedChat, Set<Long> trustedRDinner,
|
||||
long latestEventTimestamp,
|
||||
@ -98,7 +100,7 @@ public class MornyCoeur {
|
||||
}
|
||||
|
||||
try {
|
||||
final LogInResult loginResult = login(botKey, botUsername);
|
||||
final LogInResult loginResult = login(botApi, botApi4File, botKey, botUsername);
|
||||
this.account = loginResult.account;
|
||||
this.username = loginResult.username;
|
||||
this.userid = loginResult.userid;
|
||||
@ -135,6 +137,7 @@ public class MornyCoeur {
|
||||
* @see #MornyCoeur 程序初始化方法
|
||||
*/
|
||||
public static void main (
|
||||
@Nullable String botApi, @Nullable String botApi4File,
|
||||
@Nonnull String botKey, @Nullable String botUsername,
|
||||
long master, long trustedChat, Set<Long> trustedRDinner, long latestEventTimestamp,
|
||||
boolean isAutomaticResetCommandList, boolean isRemoveCommandListWhenExit
|
||||
@ -142,6 +145,7 @@ public class MornyCoeur {
|
||||
if (INSTANCE == null) {
|
||||
logger.info("Coeur Starting");
|
||||
INSTANCE = new MornyCoeur(
|
||||
botApi, botApi4File,
|
||||
botKey, botUsername,
|
||||
master, trustedChat, trustedRDinner,
|
||||
latestEventTimestamp,
|
||||
@ -193,12 +197,42 @@ public class MornyCoeur {
|
||||
* 会通过 GetMe 动作验证是否连接上了 telegram api 服务器,
|
||||
* 同时也要求登录获得的 username 和 {@link #username} 声明值相等
|
||||
*
|
||||
* @param api bot client 将会连接到的 telegram bot api 位置
|
||||
* @param api4File bot client 将会连接到的 telegram file api 位置,如果不指定则会跟随 {@code api} 选项的设定
|
||||
* @param key bot 的 api-token
|
||||
* @param requireName 要求登录到的需要的 username,如果登陆后的 username 与此不同则会报错退出
|
||||
* @return 成功登录后的 {@link TelegramBot} 对象
|
||||
*/
|
||||
@Nonnull
|
||||
private static LogInResult login (@Nonnull String key, @Nullable String requireName) {
|
||||
final TelegramBot account = new TelegramBot(key);
|
||||
private static LogInResult login (
|
||||
@Nullable String api, @Nullable String api4File,
|
||||
@Nonnull String key, @Nullable String requireName
|
||||
) {
|
||||
final TelegramBot.Builder accountConfig = new TelegramBot.Builder(key);
|
||||
boolean isCustomApi = false;
|
||||
String apiUrlSet = "https://api.telegram.org/bot";
|
||||
String api4FileUrlSet = FileApi.FILE_API;
|
||||
if (api != null) {
|
||||
api = api.endsWith("/") ? api.substring(0, api.length() - 1) : api;
|
||||
accountConfig.apiUrl(apiUrlSet = api.endsWith("/bot")? api : api + "/bot");
|
||||
isCustomApi = true;
|
||||
}
|
||||
if (api4File != null) {
|
||||
api4File = api4File.endsWith("/") ? api4File : api4File + "/";
|
||||
accountConfig.fileApiUrl(api4FileUrlSet = api4File.endsWith("/file/bot")? api4File : api4File + "/file/bot");
|
||||
isCustomApi = true;
|
||||
} else if (api != null && !api.endsWith("/bot")) {
|
||||
accountConfig.fileApiUrl(api4FileUrlSet = api + "/file/bot");
|
||||
}
|
||||
if (isCustomApi) {
|
||||
logger.info(String.format("""
|
||||
Telegram Bot API set to :
|
||||
- %s
|
||||
- %s""",
|
||||
apiUrlSet, api4FileUrlSet
|
||||
));
|
||||
}
|
||||
final TelegramBot account = accountConfig.build();
|
||||
logger.info("Trying to login...");
|
||||
for (int i = 1; i < 4; i++) {
|
||||
if (i != 1) logger.info("retrying...");
|
||||
|
@ -43,6 +43,14 @@ public class ServerMain {
|
||||
* {@code --username} {@link MornyCoeur#getUsername() bot 的 username} 预定义
|
||||
* </li>
|
||||
* <li>
|
||||
* {@code --api} 设定 {@link MornyCoeur#getAccount() bot client} 使用的 telegram bot api server。
|
||||
* 需要注意的是如果带有后缀 {@code /bot} 则会单独设定 api server
|
||||
* 而不会适应性的同时为 {@code --api-files} 设定值。
|
||||
* </li>
|
||||
* <li>
|
||||
* {@code --api-files} 单独设定 {@link MornyCoeur#getAccount() bot client} 使用的 telegram bot file api server
|
||||
* </li>
|
||||
* <li>
|
||||
* {@code --no-hello} 不在主程序启动时输出用于欢迎消息的字符画。
|
||||
* 与 {@code --only-hello} 参数不兼容 —— 会导致程序完全没有任何输出
|
||||
* </li>
|
||||
@ -60,14 +68,11 @@ public class ServerMain {
|
||||
* {@code --auto-cmd-remove} 使 morny 在关闭时自动依据程序本体删除 bot 的命令列表
|
||||
* </li>
|
||||
* </ul>
|
||||
* 除去选项之外,第一个参数会被赋值为 bot 的 telegram bot api token,
|
||||
* 第二个参数会被赋值为 bot 的 username 限定名。其余的参数会被认定为无法理解。<br>
|
||||
* <br>
|
||||
* <s>除去选项之外,第一个参数会被赋值为 bot 的 telegram bot api token,</s>
|
||||
* <s>第二个参数会被赋值为 bot 的 username 限定名。其余的参数会被认定为无法理解。</s><br>
|
||||
* <b>自 {@code 0.4.2.3},token 和 username 的赋值已被选项组支持</b><br>
|
||||
* 使用参数所进行取值的 token 和 username 已被转移至 {@code --token} 和 {@code --username} 参数,
|
||||
* <u>或许,直接参数赋值的支持将计划在 {@code 0.4.3} 标记废弃并在 {@code 0.5} 删除。</u>
|
||||
* <s>但实际上这并不影响现在的使用,选项赋值目前仍属于测试功能</s><br>
|
||||
* <b>但请勿混用</b>,这将使两个赋值出现混淆并<b>产生不可知的结果</b>
|
||||
* <b>自 {@code 0.5.0.4},旧的直接通过参数为 bot token & username 赋值的方式已被删除</b>
|
||||
* 使用参数所进行取值的 token 和 username 已被转移至 {@code --token} 和 {@code --username} 参数<br>
|
||||
*
|
||||
* @see MornyCoeur#main
|
||||
* @since 0.4.0.0
|
||||
@ -90,6 +95,8 @@ public class ServerMain {
|
||||
long trustedChat = -1001541451710L;
|
||||
boolean autoCmdList = false;
|
||||
boolean autoCmdRemove = false;
|
||||
String api = null;
|
||||
String api4File = null;
|
||||
|
||||
for (int i = 0; i < args.length; i++) {
|
||||
|
||||
@ -151,6 +158,16 @@ public class ServerMain {
|
||||
autoCmdRemove = true;
|
||||
continue;
|
||||
}
|
||||
case "--api", "-a" -> {
|
||||
i++;
|
||||
api = args[i];
|
||||
continue;
|
||||
}
|
||||
case "--api-files", "files-api", "-af" -> {
|
||||
i++;
|
||||
api4File = args[i];
|
||||
continue;
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
@ -197,9 +214,11 @@ public class ServerMain {
|
||||
|
||||
logger.info(String.format("""
|
||||
ServerMain.java Loaded >>>
|
||||
- version %s %s (%s)(%d)""",
|
||||
MornySystem.VERSION, MornySystem.CODENAME.toUpperCase(),
|
||||
MornySystem.getJarMd5(), GradleProjectConfigures.COMPILE_TIMESTAMP
|
||||
- version %s (%s)(%d)
|
||||
- Morny %s""",
|
||||
MornySystem.VERSION,
|
||||
MornySystem.getJarMd5(), GradleProjectConfigures.COMPILE_TIMESTAMP,
|
||||
MornySystem.CODENAME.toUpperCase()
|
||||
));
|
||||
|
||||
//#
|
||||
@ -215,6 +234,7 @@ public class ServerMain {
|
||||
return;
|
||||
}
|
||||
MornyCoeur.main(
|
||||
api, api4File,
|
||||
key, username,
|
||||
master, trustedChat, trustedReadersOfDinner,
|
||||
outdatedBlock?System.currentTimeMillis():0,
|
||||
|
Loading…
Reference in New Issue
Block a user