6 changed files with 94 additions and 230 deletions
			
			
		@ -1,45 +0,0 @@
				@@ -1,45 +0,0 @@
					 | 
				
			||||
#!/usr/bin/python | 
				
			||||
"""Example bot for oyoyo that responds to !say""" | 
				
			||||
 | 
				
			||||
import logging | 
				
			||||
import re | 
				
			||||
 | 
				
			||||
from oyoyo.client import IRCClient | 
				
			||||
from oyoyo.cmdhandler import DefaultCommandHandler | 
				
			||||
from oyoyo import helpers | 
				
			||||
 | 
				
			||||
 | 
				
			||||
HOST = 'irc.freenode.net' | 
				
			||||
PORT = 6667 | 
				
			||||
NICK = 'oyoyo-example' | 
				
			||||
CHANNEL = '#oyoyo-test' | 
				
			||||
 | 
				
			||||
 | 
				
			||||
class MyHandler(DefaultCommandHandler): | 
				
			||||
    def privmsg(self, nick, chan, msg): | 
				
			||||
        msg = msg.decode() | 
				
			||||
        match = re.match('\!say (.*)', msg) | 
				
			||||
        if match: | 
				
			||||
            to_say = match.group(1).strip() | 
				
			||||
            print(('Saying, "%s"' % to_say)) | 
				
			||||
            helpers.msg(self.client, chan, to_say) | 
				
			||||
 | 
				
			||||
 | 
				
			||||
def connect_cb(cli): | 
				
			||||
    helpers.join(cli, CHANNEL) | 
				
			||||
 | 
				
			||||
 | 
				
			||||
def main(): | 
				
			||||
    logging.basicConfig(level=logging.DEBUG) | 
				
			||||
 | 
				
			||||
    cli = IRCClient(MyHandler, host=HOST, port=PORT, nick=NICK, | 
				
			||||
                    connect_cb=connect_cb) | 
				
			||||
    conn = cli.connect() | 
				
			||||
 | 
				
			||||
    while True: | 
				
			||||
        next(conn)      ## python 2 | 
				
			||||
	# next(conn)     ## python 3 | 
				
			||||
 | 
				
			||||
 | 
				
			||||
if __name__ == '__main__': | 
				
			||||
    main() | 
				
			||||
@ -1,90 +0,0 @@
				@@ -1,90 +0,0 @@
					 | 
				
			||||
# Copyright (c) 2008 Duncan Fordyce | 
				
			||||
# Permission is hereby granted, free of charge, to any person obtaining a copy | 
				
			||||
# of this software and associated documentation files (the "Software"), to deal | 
				
			||||
# in the Software without restriction, including without limitation the rights | 
				
			||||
# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell | 
				
			||||
# copies of the Software, and to permit persons to whom the Software is | 
				
			||||
# furnished to do so, subject to the following conditions: | 
				
			||||
# The above copyright notice and this permission notice shall be included in | 
				
			||||
#  all copies or substantial portions of the Software. | 
				
			||||
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR | 
				
			||||
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, | 
				
			||||
# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE | 
				
			||||
# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER | 
				
			||||
# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, | 
				
			||||
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN | 
				
			||||
# THE SOFTWARE. | 
				
			||||
 | 
				
			||||
""" contains helper functions for common irc commands """ | 
				
			||||
 | 
				
			||||
import random | 
				
			||||
 | 
				
			||||
def msg(cli, user, msg): | 
				
			||||
    for line in msg.split('\n'): | 
				
			||||
        cli.send("PRIVMSG", user, ":%s" % line) | 
				
			||||
 | 
				
			||||
def msgrandom(cli, choices, dest, user=None): | 
				
			||||
    o = "%s: " % user if user else "" | 
				
			||||
    o += random.choice(choices) | 
				
			||||
    msg(cli, dest, o) | 
				
			||||
 | 
				
			||||
def _makeMsgRandomFunc(choices): | 
				
			||||
    def func(cli, dest, user=None): | 
				
			||||
        msgrandom(cli, choices, dest, user) | 
				
			||||
    return func | 
				
			||||
 | 
				
			||||
msgYes = _makeMsgRandomFunc(['yes', 'alright', 'ok']) | 
				
			||||
msgOK = _makeMsgRandomFunc(['ok', 'done']) | 
				
			||||
msgNo = _makeMsgRandomFunc(['no', 'no-way']) | 
				
			||||
 | 
				
			||||
 | 
				
			||||
def ns(cli, *args): | 
				
			||||
    msg(cli, "NickServ", " ".join(args)) | 
				
			||||
 | 
				
			||||
def cs(cli, *args): | 
				
			||||
    msg(cli, "ChanServ", " ".join(args)) | 
				
			||||
 | 
				
			||||
def identify(cli, passwd, authuser="NickServ"): | 
				
			||||
    msg(cli, authuser, "IDENTIFY %s" % passwd) | 
				
			||||
 | 
				
			||||
def quit(cli, msg='gone'): | 
				
			||||
    cli.send("QUIT :%s" % msg) | 
				
			||||
    cli._end = 1 | 
				
			||||
     | 
				
			||||
def mode(cli, chan, mod): | 
				
			||||
    cli.send("MODE", chan, mod) | 
				
			||||
 | 
				
			||||
def user(cli, username, realname=None): | 
				
			||||
    cli.send("USER", username, cli.host, cli.host,  | 
				
			||||
        realname or username) | 
				
			||||
 | 
				
			||||
_simple = ( | 
				
			||||
    'join', | 
				
			||||
    'part', | 
				
			||||
    'nick', | 
				
			||||
    'notice', | 
				
			||||
) | 
				
			||||
def _addsimple(): | 
				
			||||
    import sys | 
				
			||||
    def simplecmd(cmd_name): | 
				
			||||
        def f(cli, *args): | 
				
			||||
            cli.send(cmd_name, *args) | 
				
			||||
        return f | 
				
			||||
    m = sys.modules[__name__] | 
				
			||||
    for t in _simple: | 
				
			||||
        setattr(m, t, simplecmd(t.upper())) | 
				
			||||
_addsimple() | 
				
			||||
 | 
				
			||||
def _addNumerics(): | 
				
			||||
    import sys | 
				
			||||
    from oyoyo import ircevents | 
				
			||||
    def numericcmd(cmd_num, cmd_name): | 
				
			||||
        def f(cli, *args): | 
				
			||||
            cli.send(cmd_num, *args) | 
				
			||||
        return f | 
				
			||||
    m = sys.modules[__name__] | 
				
			||||
    for num, name in ircevents.numeric_events.items(): | 
				
			||||
        setattr(m, name, numericcmd(num, name)) | 
				
			||||
         | 
				
			||||
_addNumerics() | 
				
			||||
 | 
				
			||||
@ -1,4 +1,13 @@
				@@ -1,4 +1,13 @@
					 | 
				
			||||
GAME_STARTED = False | 
				
			||||
ROLES = {"person" : []} | 
				
			||||
ORIGINAL_ROLES = None | 
				
			||||
PHASE = "none"  # "join", "day", or "night" | 
				
			||||
PHASE = "none"  # "join", "day", or "night" | 
				
			||||
GUNNERS = {} | 
				
			||||
MAX_SHOTS = 2 | 
				
			||||
 | 
				
			||||
is_role = lambda plyr, rol: rol in ROLES and plyr in ROLES[rol] | 
				
			||||
 | 
				
			||||
def plural(role): | 
				
			||||
    if role == "wolf": return "wolves" | 
				
			||||
    elif role == "person": return "people" | 
				
			||||
    else: return role + "s" | 
				
			||||
					Loading…
					
					
				
		Reference in new issue