-
Notifications
You must be signed in to change notification settings - Fork 2
/
hakcbot_regex.py
50 lines (40 loc) · 1.21 KB
/
hakcbot_regex.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
#!/usr/bin/env python3
import re as _re
import time as _time
import asyncio as _asyncio
from enum import Enum as _Enum
from collections import namedtuple as _namedtuple
fast_time = _time.time
fast_sleep = _time.sleep
afast_sleep = _asyncio.sleep
NULL = (None, None)
ANNOUNCEMENT_INTERVAL = 120 * 60 # 120 minutes
USER_TUPLE = _namedtuple('user', 'name bcast mod sub vip permit timestamp')
class AA(_Enum):
ERROR = 0
ACCEPT = 1
DROP = 2
class AK(_Enum):
DEL = 0
ADD = 1
MOD = 2
EXIST = -1
SUB = _re.compile(r'subscriber=(.*?);')
VIP = _re.compile(r'vip/1')
MOD = _re.compile(r'mod=(.*?);')
USER_TAGS = _re.compile(r'@badge-info=(.*?)user-type=')
MESSAGE = _re.compile(r'user-type=(.*)')
TITLE = _re.compile(r'(?P<quote>[\'"]).*?(?P=quote)')
VALID_CMD = _re.compile(r'(.*?)\((.*?)\)')
CMD = _re.compile(r'(.*?)\(')
ARG = _re.compile(r'\((.*?)\)')
URL = _re.compile(
r'(?:(?:[A-Z0-9](?:[A-Z0-9-]{0,61}[A-Z0-9])?\.)+(?:[A-Z]{2,6}\.?|[A-Z]{2,}\.?)|' # Domain
r'\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3})' # IP Address
r'(?::\d+)?' # Optional Port eg :8080
r'(?:/?|[/?]\S+)',
_re.IGNORECASE) # Sepcific pages in url eg /homepage
ONE_MIN = 60
TWO_MIN = 120
THREE_MIN = 180
FIVE_MIN = 300