summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorGravatar Uko Kokņevičs2024-07-26 17:50:08 +0300
committerGravatar Uko Kokņevičs2024-07-26 17:50:08 +0300
commit665e22036439a84e61ad28329dccf201af274923 (patch)
tree84ace178e80505e702970910ff36b818b998a2b4 /src
parentMissed this (diff)
downloadukkobot-665e22036439a84e61ad28329dccf201af274923.tar.gz
ukkobot-665e22036439a84e61ad28329dccf201af274923.tar.xz
ukkobot-665e22036439a84e61ad28329dccf201af274923.zip
Send a different GIF when bot gets added
Diffstat (limited to 'src')
-rw-r--r--src/Bot.zig19
-rw-r--r--src/main.zig12
2 files changed, 24 insertions, 7 deletions
diff --git a/src/Bot.zig b/src/Bot.zig
index 49c5df3..adfafef 100644
--- a/src/Bot.zig
+++ b/src/Bot.zig
@@ -19,6 +19,7 @@ uri_path_data: ArrayList(u8),
19poweron: bool = true, 19poweron: bool = true,
20server_header_buffer: [4096]u8 = undefined, 20server_header_buffer: [4096]u8 = undefined,
21username: ?[]const u8 = null, 21username: ?[]const u8 = null,
22id: ?i64 = null,
22 23
23pub fn init(allocator: Allocator, config: Config) !Bot { 24pub fn init(allocator: Allocator, config: Config) !Bot {
24 var uri_path_data = try ArrayList(u8).initCapacity(allocator, 5 + config.bot_token.len); 25 var uri_path_data = try ArrayList(u8).initCapacity(allocator, 5 + config.bot_token.len);
@@ -54,8 +55,20 @@ pub inline fn editMessageText_(self: *Bot, args: types.EditMessageTextParams) !v
54 (try self.editMessageText(args)).deinit(); 55 (try self.editMessageText(args)).deinit();
55} 56}
56 57
58pub inline fn getId(self: *Bot) !i64 {
59 if (self.id) |id| return id;
60 (try self.getMe()).deinit();
61 return self.id.?;
62}
63
57pub inline fn getMe(self: *Bot) !Parsed(types.User) { 64pub inline fn getMe(self: *Bot) !Parsed(types.User) {
58 return self.get(types.User, "getMe", null); 65 const user = try self.get(types.User, "getMe", null);
66 errdefer user.deinit();
67
68 self.id = user.value.id;
69 self.username = try self.allocator.dupe(u8, user.value.username.?);
70
71 return user;
59} 72}
60 73
61pub inline fn getMyName(self: *Bot, args: types.GetMyNameParams) !Parsed(types.BotName) { 74pub inline fn getMyName(self: *Bot, args: types.GetMyNameParams) !Parsed(types.BotName) {
@@ -68,9 +81,7 @@ pub inline fn getUpdates(self: *Bot, args: types.GetUpdatesParams) !Parsed([]typ
68 81
69pub inline fn getUsername(self: *Bot) ![]const u8 { 82pub inline fn getUsername(self: *Bot) ![]const u8 {
70 if (self.username) |username| return username; 83 if (self.username) |username| return username;
71 const user = try self.getMe(); 84 (try self.getMe()).deinit();
72 defer user.deinit();
73 self.username = user.value.username;
74 return self.username.?; 85 return self.username.?;
75} 86}
76 87
diff --git a/src/main.zig b/src/main.zig
index 0bc5013..04d4055 100644
--- a/src/main.zig
+++ b/src/main.zig
@@ -92,6 +92,15 @@ fn onMessage(bot: *Bot, msg: types.Message) !void {
92} 92}
93 93
94fn onNewMember(bot: *Bot, msg: types.Message, new_member: types.User) !void { 94fn onNewMember(bot: *Bot, msg: types.Message, new_member: types.User) !void {
95 if (new_member.id == try bot.getId()) {
96 // Bot is added to a new group
97 return bot.sendAnimation_(.{
98 .chat_id = msg.chat.id,
99 // TODO: lol
100 .animation = "CgACAgQAAx0CVcPEEgACDC5mo7YHMgOE2n3qo3e9UOyd4N-uxQACNAMAAlbuDFMRWj9LxNLBkDUE",
101 });
102 }
103
95 var sb = ArrayList(u8).init(bot.allocator); 104 var sb = ArrayList(u8).init(bot.allocator);
96 defer sb.deinit(); 105 defer sb.deinit();
97 106
@@ -105,9 +114,6 @@ fn onNewMember(bot: *Bot, msg: types.Message, new_member: types.User) !void {
105 .chat_id = msg.chat.id, 114 .chat_id = msg.chat.id,
106 // TODO: lol 115 // TODO: lol
107 .animation = "CgACAgQAAx0CVcPEEgACC9Vmo6_zCxMp3ZNXSMM1nI6nMkIhgwACNwMAAtDmDFMop6BHmV7lUTUE", 116 .animation = "CgACAgQAAx0CVcPEEgACC9Vmo6_zCxMp3ZNXSMM1nI6nMkIhgwACNwMAAtDmDFMop6BHmV7lUTUE",
108 .duration = 3,
109 .width = 166,
110 .height = 240,
111 .caption = sb.items, 117 .caption = sb.items,
112 .parse_mode = .html, 118 .parse_mode = .html,
113 .show_caption_above_media = true, 119 .show_caption_above_media = true,