Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/axgdev/telezig
A telegram bot library written in Zig ⚡
https://github.com/axgdev/telezig
Last synced: 3 months ago
JSON representation
A telegram bot library written in Zig ⚡
- Host: GitHub
- URL: https://github.com/axgdev/telezig
- Owner: axgdev
- License: mit
- Created: 2022-02-15T21:46:12.000Z (over 2 years ago)
- Default Branch: main
- Last Pushed: 2022-02-24T22:34:33.000Z (over 2 years ago)
- Last Synced: 2024-06-08T21:34:57.520Z (5 months ago)
- Language: Zig
- Size: 32.2 KB
- Stars: 18
- Watchers: 1
- Forks: 1
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# telezig
A telegram bot library written in Zig ⚡[![License](https://img.shields.io/badge/license-MIT-green)](https://github.com/ducdetronquito/requestz#license)
## Installation
Install telezig using gyro
```
gyro add --src github axgdev/telezig
```## Usage
Echo bot example:
- Load the bot token to pass it as a string to the library
```zig
fn getToken(token_path: []const u8, buffer: []u8) !void {
const file = try std.fs.cwd().openFile(token_path, .{ .mode = .read_only });
defer file.close();
_ = try file.reader().read(buffer);
}
```- Example of a echo bot loop
```zig
// Windows-only startup, this might not be needed in the future if fixed, see: https://github.com/ziglang/zig/issues/8943
if (builtin.os.tag == std.Target.Os.Tag.windows) _ = try std.os.windows.WSAStartup(2, 0);var allocator = std.testing.allocator;
var token: [46]u8 = undefined;
// Here we call the function above to load the token from a file,
// but you can decide to load it from an environment variable or any other way
try getToken("token.txt", token[0..]);
var bot = try Telezig.init(allocator, token[0..]);var update_id: i64 = std.math.minInt(i64);
var sleep_seconds: u64 = 10;
// Here we run an infinite loop to get messages written to the bot and respond with the same text.
// The only way to stop it is to kill the app
while (true) {
// Sleep some seconds on each loop to not make too many requests to the Telegram API
std.time.sleep(sleep_seconds * std.time.ns_per_s);
// Get the updates from the Telegram API
var update = try bot.getUpdates();
defer bot.allocator.free(update.text);// We only send an echo message if someone has sent any new message to the bot
var new_update_id = update.update_id;
if (update_id == new_update_id) continue;
update_id = new_update_id;// Send the same message we received
try bot.sendMessage(update);
}// Windows-only cleanup, this might not be needed in the future if fixed, see: https://github.com/ziglang/zig/issues/8943
if (builtin.os.tag == std.Target.Os.Tag.windows) try std.os.windows.WSACleanup();
```
## Dependencies- [iguanaTLS](https://github.com/alexnask/iguanaTLS)
## License
*telezig* is released under the [MIT License](https://choosealicense.com/licenses/mit/). 🎉🍻