aboutsummaryrefslogtreecommitdiff
path: root/handlers.c
diff options
context:
space:
mode:
authorTrumeet <yuuta@yuuta.moe>2021-11-13 12:25:41 -0800
committerTrumeet <yuuta@yuuta.moe>2021-11-13 12:25:41 -0800
commit47032d1b4143bb9e9438dc4463fcc9d3be727926 (patch)
treee89719afc42bcd82e445a4406805fe915258c059 /handlers.c
downloadmutebot-47032d1b4143bb9e9438dc4463fcc9d3be727926.tar
mutebot-47032d1b4143bb9e9438dc4463fcc9d3be727926.tar.gz
mutebot-47032d1b4143bb9e9438dc4463fcc9d3be727926.tar.bz2
mutebot-47032d1b4143bb9e9438dc4463fcc9d3be727926.zip
First Commit
Diffstat (limited to 'handlers.c')
-rw-r--r--handlers.c43
1 files changed, 43 insertions, 0 deletions
diff --git a/handlers.c b/handlers.c
new file mode 100644
index 0000000..be2e653
--- /dev/null
+++ b/handlers.c
@@ -0,0 +1,43 @@
+#include "mutebot.h"
+#include "tdutils.h"
+
+#include <stdio.h>
+
+static void restrict_user(long long chat_id, long long uid) {
+ struct TdChatPermissions *permissions =
+ TdCreateObjectChatPermissions(0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0);
+ struct TdChatMemberStatus *status =
+ (struct TdChatMemberStatus *) TdCreateObjectChatMemberStatusRestricted(1,
+ 0,
+ permissions);
+ td_send(TdCreateObjectSetChatMemberStatus(chat_id,
+ (struct TdMessageSender *) TdCreateObjectMessageSenderUser(uid),
+ status),
+ NULL);
+}
+
+int handle_message(struct TdUpdateNewMessage *update) {
+ const struct TdMessage *message = update->message_;
+ if (message->sender_->ID == CODE_MessageSenderUser &&
+ (message->content_->ID == CODE_MessageChatJoinByRequest ||
+ message->content_->ID == CODE_MessageChatJoinByLink)) {
+ restrict_user(message->chat_id_, ((struct TdMessageSenderUser *) message->sender_)->user_id_);
+ return 0;
+ }
+ if (message->content_->ID != CODE_MessageChatAddMembers)
+ return 0;
+ struct TdMessageChatAddMembers *addMembers =
+ (struct TdMessageChatAddMembers *) message->content_;
+ for (int i = 0; i < addMembers->member_user_ids_->len; i++) {
+ const long long uid = addMembers->member_user_ids_->data[i];
+ restrict_user(message->chat_id_, uid);
+ }
+ return 0;
+} \ No newline at end of file