/
handler.py
96 lines (76 loc) · 2.7 KB
/
handler.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
import sys
sys.path.insert(0, 'vendor')
import os
import requests
import random
import json
API_ROOT = 'https://api.groupme.com/v3/'
FLAGGED_PHRASES = (
'essay written by professionals',
'paper writing service',
'academic writing service',
'student paper assignments',
'getting professional academic help from us is easy',
'cutt.us',
'inyurl.com/muxz7h',
'u.to/xavt',
'we write your papers',
'best in the writing service industry',
'side job offer for you which',
'getting $1000 within week',
'lost my daughter to cancer about a week ago,she was',
'to cancer about a week ago',
'play station 5',
'ps5',
'ticket',
'tickets',
'essay writer',
'super writer',
'cute writer',
'hentai',
)
def get_memberships(group_id, token):
response = requests.get(f'{API_ROOT}groups/{group_id}', params={'token': token}).json()['response']['members']
return response
def get_membership_id(group_id, user_id, token):
memberships = get_memberships(group_id, token)
for membership in memberships:
if membership['user_id'] == user_id:
return membership['id']
return None
def remove_member(group_id, membership_id, token):
response = requests.post(f'{API_ROOT}groups/{group_id}/members/{membership_id}/remove', params={'token': token})
print('Attempted to kick user, got response:')
print(response.text)
return response.ok # Return whether the request was successful
def delete_message(group_id, message_id, token):
response = requests.delete(f'{API_ROOT}conversations/{group_id}/messages/{message_id}', params={'token': token})
return response.ok
def kick_user(group_id, user_id, token):
membership_id = get_membership_id(group_id, user_id, token)
if membership_id:
return remove_member(group_id, membership_id, token)
return False
def receive(event, context):
message = json.loads(event['body'])
bot_id = message['bot_id']
for phrase in FLAGGED_PHRASES:
if phrase in message['text'].lower():
# Attempt to kick the user and check if it was successful
if kick_user(message['group_id'], message['user_id'], message['token']):
delete_message(message['group_id'], message['id'], message['token'])
send('Kicked ' + message['name'] + ' due to apparent spam post.', bot_id)
else:
print('Kick attempt failed or user is an admin.')
break
return {
'statusCode': 200,
'body': 'ok'
}
def send(text, bot_id):
url = 'https://api.groupme.com/v3/bots/post'
message = {
'bot_id': bot_id,
'text': text,
}
r = requests.post(url, json=message)