GitHub Access Token became invalid

It seems like the GitHub access token used for retrieving details about this repository from GitHub became invalid. This might prevent certain types of inspections from being run (in particular, everything related to pull requests).
Please ask an admin of your repository to re-new the access token on this website.
Completed
Push — master ( 6f4f6d...9a5ffb )
by
unknown
10s
created

Bot   A

Complexity

Total Complexity 23

Size/Duplication

Total Lines 94
Duplicated Lines 0 %

Importance

Changes 3
Bugs 0 Features 0
Metric Value
dl 0
loc 94
rs 10
c 3
b 0
f 0
wmc 23

16 Methods

Rating   Name   Duplication   Size   Complexity  
A log_error() 0 12 2
A handler() 0 2 1
A change_user() 0 5 3
A add_user() 0 2 1
A handle_connect() 0 4 1
A remove_user() 0 4 3
A part_user() 0 2 1
A next_nick() 0 3 1
A set_nick() 0 3 1
A collect_incoming_data() 0 2 1
A say() 0 7 2
A print_debug() 0 3 2
A write() 0 3 1
A found_terminator() 0 5 1
A __init__() 0 10 1
A run() 0 13 2
1
#!/usr/bin/python
2
3
from datetime import datetime
4
from time import time
5
import random
6
import signal
7
import socket
8
import asyncore
9
import asynchat
10
11
import settings
12
import logic
13
14
15
class Bot(asynchat.async_chat):
16
17
    def __init__(self):
18
        asynchat.async_chat.__init__(self)
19
        self.known_users = {}
20
        self.buffer = ''
21
        self.set_terminator('\r\n')
22
        self.nick_num = 0
23
        self.nick = settings.NICKS[self.nick_num]
24
        self.logic = logic.BotLogic(self)
25
        self.ac_in_buffer_size = self.ac_out_buffer_size = 8192   # 2*default
26
        self.start_time = time()
27
28
    def print_debug(self, text):
29
        if settings.DEBUG:
30
            print(text)
31
32
    def write(self, text):
33
        self.print_debug('> %s' % text)
34
        self.push(text + '\r\n')
35
36
    def say(self, text, channel):
37
        if not text:
38
            return
39
        line = 'PRIVMSG %s :%s' % (channel, text)
40
        self.write(line)
41
        self.logic.self_input(channel, text, line)
42
        return line
43
44
    def set_nick(self):
45
        self.nick = settings.NICKS[self.nick_num]
46
        self.write('NICK %s' % self.nick)
47
48
    def next_nick(self):
49
        self.nick_num = (self.nick_num + 1) % len(settings.NICKS)
50
        self.set_nick()
51
52
    def handle_connect(self):
53
        self.set_nick()
54
        self.write('USER %s iw 0 :%s' %
55
                   (settings.IDENT, settings.REAL_NAME))
56
57
    def collect_incoming_data(self, data):
58
        self.buffer += data
59
60
    def log_error(self, text):
61
        with open("error.log", "a") as f:
62
            f.write(str(datetime.now()) + '\n')
63
            f.write('Error: ' + text + '\n')
64
            self.print_debug(text)
65
66
            from traceback import format_exception
67
            from sys import exc_info
68
            ex_type, ex_val, ex_tb = exc_info()
69
            ex_text = ''.join(format_exception(ex_type, ex_val, ex_tb, 10))
70
            f.write(ex_text + '\n')
71
            self.print_debug(ex_text)
72
73
    def found_terminator(self):
74
        line = self.buffer
75
        self.buffer = ''
76
        self.print_debug("< " + line)
77
        self.logic.new_input(line)
78
79
    def run(self):
80
        def handler(signal, frame):
81
            pass
82
83
        self.create_socket(socket.AF_INET, socket.SOCK_STREAM)
84
        self.connect((settings.IRC_SERVER, settings.IRC_PORT))
85
86
        random.seed()
87
        # set the signal handler for shouting random messages
88
        signal.signal(signal.SIGALRM, handler)
89
        signal.alarm(20)
90
91
        asyncore.loop()
92
93
    def part_user(self, channel, nick, msg):
94
        del self.known_users[channel][nick.lower()]
95
96
    def remove_user(self, channel, nick, msg):
97
        for channel in self.known_users:
98
            if nick.lower() in self.known_users[channel]:
99
                self.part_user(channel, nick, msg)
100
101
    def add_user(self, channel, nick, msg):
102
        self.known_users[channel][nick.lower()] = nick
103
104
    def change_user(self, channel, old_nick, new_nick):
105
        for channel in self.known_users:
106
            if old_nick.lower() in self.known_users[channel]:
107
                del self.known_users[channel][old_nick.lower()]
108
                self.known_users[channel][new_nick.lower()] = new_nick
109