Added customization class
This commit is contained in:
parent
951765e3c8
commit
ec3b788a72
@ -45,7 +45,7 @@ public class App extends Application {
|
|||||||
|
|
||||||
scene = new Scene(loadFXML("primary"), 800, 600);
|
scene = new Scene(loadFXML("primary"), 800, 600);
|
||||||
stage.setScene(scene);
|
stage.setScene(scene);
|
||||||
stage.setTitle("TransferBot");
|
stage.setTitle(StaticSettings.BRANDING_NAME);
|
||||||
stage.show();
|
stage.show();
|
||||||
logService.append(Level.INFO, "Initialized");
|
logService.append(Level.INFO, "Initialized");
|
||||||
}
|
}
|
||||||
|
@ -1,5 +1,8 @@
|
|||||||
package it.cavallium;
|
package it.cavallium;
|
||||||
|
|
||||||
|
import static it.cavallium.StaticSettings.REMOVE_MEMBERS_FROM_SOURCE_SUPERGROUP;
|
||||||
|
import static it.cavallium.StaticSettings.requiresAdminPrivilegesOnSourceSupergroup;
|
||||||
|
|
||||||
import com.google.i18n.phonenumbers.NumberParseException;
|
import com.google.i18n.phonenumbers.NumberParseException;
|
||||||
import com.google.i18n.phonenumbers.PhoneNumberUtil;
|
import com.google.i18n.phonenumbers.PhoneNumberUtil;
|
||||||
import com.google.i18n.phonenumbers.PhoneNumberUtil.PhoneNumberFormat;
|
import com.google.i18n.phonenumbers.PhoneNumberUtil.PhoneNumberFormat;
|
||||||
@ -59,7 +62,7 @@ public class PrimaryController {
|
|||||||
|
|
||||||
var srcItems = sourceGroupCombo.getItems();
|
var srcItems = sourceGroupCombo.getItems();
|
||||||
srcItems.clear();
|
srcItems.clear();
|
||||||
for (BaseChatInfo originSupergroups : App.getTransferService().getAdminSupergroups(true, false)) {
|
for (BaseChatInfo originSupergroups : App.getTransferService().getAdminSupergroups(REMOVE_MEMBERS_FROM_SOURCE_SUPERGROUP, false)) {
|
||||||
srcItems.add(originSupergroups);
|
srcItems.add(originSupergroups);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
11
src/main/java/it/cavallium/StaticSettings.java
Normal file
11
src/main/java/it/cavallium/StaticSettings.java
Normal file
@ -0,0 +1,11 @@
|
|||||||
|
package it.cavallium;
|
||||||
|
|
||||||
|
public class StaticSettings {
|
||||||
|
|
||||||
|
public static final String BRANDING_NAME = "TransferBot";
|
||||||
|
public static final boolean REMOVE_MEMBERS_FROM_SOURCE_SUPERGROUP = true;
|
||||||
|
|
||||||
|
public static boolean requiresAdminPrivilegesOnSourceSupergroup() {
|
||||||
|
return REMOVE_MEMBERS_FROM_SOURCE_SUPERGROUP;
|
||||||
|
}
|
||||||
|
}
|
@ -1,6 +1,8 @@
|
|||||||
package it.cavallium;
|
package it.cavallium;
|
||||||
|
|
||||||
import static it.cavallium.PrimaryController.getUserbotPhoneNumber;
|
import static it.cavallium.PrimaryController.getUserbotPhoneNumber;
|
||||||
|
import static it.cavallium.StaticSettings.REMOVE_MEMBERS_FROM_SOURCE_SUPERGROUP;
|
||||||
|
import static it.cavallium.StaticSettings.requiresAdminPrivilegesOnSourceSupergroup;
|
||||||
|
|
||||||
import com.google.i18n.phonenumbers.NumberParseException;
|
import com.google.i18n.phonenumbers.NumberParseException;
|
||||||
import com.google.i18n.phonenumbers.PhoneNumberUtil;
|
import com.google.i18n.phonenumbers.PhoneNumberUtil;
|
||||||
@ -17,6 +19,7 @@ import it.tdlight.jni.TdApi.AuthorizationStateReady;
|
|||||||
import it.tdlight.jni.TdApi.ChatMemberStatusAdministrator;
|
import it.tdlight.jni.TdApi.ChatMemberStatusAdministrator;
|
||||||
import it.tdlight.jni.TdApi.ChatMemberStatusCreator;
|
import it.tdlight.jni.TdApi.ChatMemberStatusCreator;
|
||||||
import it.tdlight.jni.TdApi.ChatMemberStatusLeft;
|
import it.tdlight.jni.TdApi.ChatMemberStatusLeft;
|
||||||
|
import it.tdlight.jni.TdApi.ChatMemberStatusMember;
|
||||||
import it.tdlight.jni.TdApi.GetMe;
|
import it.tdlight.jni.TdApi.GetMe;
|
||||||
import it.tdlight.jni.TdApi.GetUserPrivacySettingRules;
|
import it.tdlight.jni.TdApi.GetUserPrivacySettingRules;
|
||||||
import it.tdlight.jni.TdApi.Ok;
|
import it.tdlight.jni.TdApi.Ok;
|
||||||
@ -309,7 +312,7 @@ public class TransferServiceImpl implements TransferService {
|
|||||||
.then(phaseDescriptionConsumer.apply("Transfer from " + sourceGroup.getTitle() + " to " + destGroup.getTitle()))
|
.then(phaseDescriptionConsumer.apply("Transfer from " + sourceGroup.getTitle() + " to " + destGroup.getTitle()))
|
||||||
|
|
||||||
// Check and get the set of userbots that can transfer users from group X to group Y
|
// Check and get the set of userbots that can transfer users from group X to group Y
|
||||||
.then(phaseDescriptionConsumer.apply("Checking available userbots for removing users in the source group"))
|
.then(phaseDescriptionConsumer.apply("Checking available userbots for " + (REMOVE_MEMBERS_FROM_SOURCE_SUPERGROUP ? "removing" : "managing") + " users in the source group"))
|
||||||
.thenMany(Flux.fromIterable(sourceSupergroupClients))
|
.thenMany(Flux.fromIterable(sourceSupergroupClients))
|
||||||
.flatMap(client -> client
|
.flatMap(client -> client
|
||||||
.send(new TdApi.GetMe())
|
.send(new TdApi.GetMe())
|
||||||
@ -322,19 +325,32 @@ public class TransferServiceImpl implements TransferService {
|
|||||||
.flatMap(MonoUtils::orElseThrow)
|
.flatMap(MonoUtils::orElseThrow)
|
||||||
.timeout(Duration.ofSeconds(5))
|
.timeout(Duration.ofSeconds(5))
|
||||||
.filter(sourceGroupFullInfo -> {
|
.filter(sourceGroupFullInfo -> {
|
||||||
|
if (requiresAdminPrivilegesOnSourceSupergroup()) {
|
||||||
if (sourceGroupFullInfo.status.getConstructor() == ChatMemberStatusAdministrator.CONSTRUCTOR) {
|
if (sourceGroupFullInfo.status.getConstructor() == ChatMemberStatusAdministrator.CONSTRUCTOR) {
|
||||||
var statusAdmin = (ChatMemberStatusAdministrator) sourceGroupFullInfo.status;
|
var statusAdmin = (ChatMemberStatusAdministrator) sourceGroupFullInfo.status;
|
||||||
if (statusAdmin.canRestrictMembers) {
|
if (statusAdmin.canRestrictMembers) {
|
||||||
return true;
|
return true;
|
||||||
} else {
|
} else {
|
||||||
App.getLogService().append(Level.WARN, "Userbot " + client + " failed: Can't restrict members of group " + sourceGroup.getTitle());
|
App.getLogService().append(Level.WARN, "Userbot " + client + " failed: Can't restrict members of group " + sourceGroup.getTitle());
|
||||||
|
return false;
|
||||||
}
|
}
|
||||||
} else if (sourceGroupFullInfo.status.getConstructor() == ChatMemberStatusCreator.CONSTRUCTOR) {
|
} else if (sourceGroupFullInfo.status.getConstructor() == ChatMemberStatusCreator.CONSTRUCTOR) {
|
||||||
return true;
|
return true;
|
||||||
} else {
|
} else {
|
||||||
App.getLogService().append(Level.WARN, "Userbot " + client + " failed: Can't administer group " + sourceGroup.getTitle());
|
App.getLogService().append(Level.WARN, "Userbot " + client + " failed: Can't administer group " + sourceGroup.getTitle());
|
||||||
}
|
|
||||||
return false;
|
return false;
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
switch (sourceGroupFullInfo.status.getConstructor()) {
|
||||||
|
case ChatMemberStatusAdministrator.CONSTRUCTOR:
|
||||||
|
case ChatMemberStatusCreator.CONSTRUCTOR:
|
||||||
|
case ChatMemberStatusMember.CONSTRUCTOR:
|
||||||
|
return true;
|
||||||
|
default:
|
||||||
|
App.getLogService().append(Level.WARN, "Userbot " + client + " failed: Can't access group " + sourceGroup.getTitle() + " (probably restricted, left or banned)");
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
})
|
})
|
||||||
.map(_v -> client)
|
.map(_v -> client)
|
||||||
.onErrorResume(e -> {
|
.onErrorResume(e -> {
|
||||||
@ -537,6 +553,8 @@ public class TransferServiceImpl implements TransferService {
|
|||||||
});
|
});
|
||||||
})
|
})
|
||||||
.<User>flatMap(user -> {
|
.<User>flatMap(user -> {
|
||||||
|
if (REMOVE_MEMBERS_FROM_SOURCE_SUPERGROUP) {
|
||||||
|
// Remove the user from the source supergroup
|
||||||
return client.<Ok>send(new TdApi.SetChatMemberStatus(sourceGroup.getSupergroupId(), user.id, new ChatMemberStatusLeft()))
|
return client.<Ok>send(new TdApi.SetChatMemberStatus(sourceGroup.getSupergroupId(), user.id, new ChatMemberStatusLeft()))
|
||||||
.flatMap(result -> {
|
.flatMap(result -> {
|
||||||
if (result.failed()) {
|
if (result.failed()) {
|
||||||
@ -556,6 +574,10 @@ public class TransferServiceImpl implements TransferService {
|
|||||||
transferredSuccessfullyUsersStats.incrementAndGet();
|
transferredSuccessfullyUsersStats.incrementAndGet();
|
||||||
return userStatusConsumer.apply(new UserStatus(getName(user), user.id, UserStatusType.DONE, "")).then(Mono.empty()).thenReturn(user);
|
return userStatusConsumer.apply(new UserStatus(getName(user), user.id, UserStatusType.DONE, "")).then(Mono.empty()).thenReturn(user);
|
||||||
});
|
});
|
||||||
|
} else {
|
||||||
|
// Don't remove the user from the source supergroup
|
||||||
|
return Mono.just(user);
|
||||||
|
}
|
||||||
})
|
})
|
||||||
.delayElements(App.getSettingsService().getDelayBetweenAdds())
|
.delayElements(App.getSettingsService().getDelayBetweenAdds())
|
||||||
.collect(Collectors.toSet())
|
.collect(Collectors.toSet())
|
||||||
|
Loading…
x
Reference in New Issue
Block a user