Official Java SDK for the TOP.TL Telegram Directory API.
<dependency>
<groupId>tl.top</groupId>
<artifactId>toptl</artifactId>
<version>1.0.0</version>
</dependency>implementation 'tl.top:toptl:1.0.0'import tl.top.toptl.TopTL;
import tl.top.toptl.models.*;
TopTL client = new TopTL("your-api-token");
// Get listing info
Listing listing = client.getListing("mybot");
System.out.println(listing.getTitle() + " has " + listing.getVotes() + " votes");
// Get votes
VotesResponse votes = client.getVotes("mybot");
System.out.println("Total votes: " + votes.getTotal());
// Check if a user voted
VoteCheck check = client.hasVoted("mybot", "123456789");
if (check.isHasVoted()) {
System.out.println("User has voted!");
}
// Post stats
client.postStats("mybot", new StatsUpdate(50000L, null));
// Get global stats
Stats stats = client.getStats();
System.out.println("Total listings on TOP.TL: " + stats.getTotalListings());Automatically post stats at a regular interval:
import tl.top.toptl.TopTL;
import tl.top.toptl.TopTLAutoposter;
import tl.top.toptl.models.StatsUpdate;
import java.util.concurrent.TimeUnit;
TopTL client = new TopTL("your-api-token");
TopTLAutoposter autoposter = new TopTLAutoposter(client, "mybot", () -> {
long memberCount = bot.getGuilds().stream()
.mapToLong(g -> g.getMemberCount())
.sum();
return new StatsUpdate(memberCount, null);
});
autoposter.onError(e -> System.err.println("Failed to post stats: " + e.getMessage()));
autoposter.start(30, TimeUnit.MINUTES);
// When shutting down:
autoposter.stop();- Java 11 or higher (uses
java.net.http.HttpClient)
MIT - TOP.TL