diff options
author | Trumeet <yuuta@yuuta.moe> | 2021-11-13 12:25:41 -0800 |
---|---|---|
committer | Trumeet <yuuta@yuuta.moe> | 2021-11-13 12:25:41 -0800 |
commit | 47032d1b4143bb9e9438dc4463fcc9d3be727926 (patch) | |
tree | e89719afc42bcd82e445a4406805fe915258c059 /handlers.c | |
download | mutebot-47032d1b4143bb9e9438dc4463fcc9d3be727926.tar mutebot-47032d1b4143bb9e9438dc4463fcc9d3be727926.tar.gz mutebot-47032d1b4143bb9e9438dc4463fcc9d3be727926.tar.bz2 mutebot-47032d1b4143bb9e9438dc4463fcc9d3be727926.zip |
First Commit
Diffstat (limited to 'handlers.c')
-rw-r--r-- | handlers.c | 43 |
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 |