2012-12-24 1 views
0

나는 skybot irc bot을 사용하여, 나는 수입은 여기에 수입 파일에서 스크립트는, 거기 봇 대답에서 각에서Skybot 파이썬 IRCbot

<User1> .calc 1+3 
<Skybot> **User1:** 1+3=4 

처럼 닉을 제거하는 방법을 물어 플러그인이 싶습니다 모든 plugings로 (hook.py) : 나는 응답 사람에게 매우 감사 할 것

import inspect 
import re 


def _hook_add(func, add, name=''): 
if not hasattr(func, '_hook'): 
    func._hook = [] 
func._hook.append(add) 

if not hasattr(func, '_filename'): 
    func._filename = func.func_code.co_filename 

if not hasattr(func, '_args'): 
    argspec = inspect.getargspec(func) 
    if name: 
     n_args = len(argspec.args) 
     if argspec.defaults: 
      n_args -= len(argspec.defaults) 
     if argspec.keywords: 
      n_args -= 1 
     if argspec.varargs: 
      n_args -= 1 
     if n_args != 1: 
      err = '%ss must take 1 non-keyword argument (%s)' % (name, 
         func.__name__) 
      raise ValueError(err) 

    args = [] 
    if argspec.defaults: 
     end = bool(argspec.keywords) + bool(argspec.varargs) 
     args.extend(argspec.args[-len(argspec.defaults): 
        end if end else None]) 
    if argspec.keywords: 
     args.append(0) # means kwargs present 
    func._args = args 

if not hasattr(func, '_thread'): # does function run in its own thread? 
    func._thread = False 


def sieve(func): 
    if func.func_code.co_argcount != 5: 
     raise ValueError(
       'sieves must take 5 arguments: (bot, input, func, type, args)') 
    _hook_add(func, ['sieve', (func,)]) 
    return func 

def command(arg=None, **kwargs): 
    args = {} 

def command_wrapper(func): 
    args.setdefault('name', func.func_name) 
    _hook_add(func, ['command', (func, args)], 'command') 
    return func 

if kwargs or not inspect.isfunction(arg): 
    if arg is not None: 
     args['name'] = arg 
    args.update(kwargs) 
    return command_wrapper 
else: 
    return command_wrapper(arg) 


def event(arg=None, **kwargs): 
    args = kwargs 

def event_wrapper(func): 
    args['name'] = func.func_name 
    args.setdefault('events', ['*']) 
    _hook_add(func, ['event', (func, args)], 'event') 
    return func 

if inspect.isfunction(arg): 
    return event_wrapper(arg, kwargs) 
else: 
    if arg is not None: 
     args['events'] = arg.split() 
    return event_wrapper 


def singlethread(func): 
    func._thread = True 
    return func 


def regex(regex, flags=0, **kwargs): 
    args = kwargs 

def regex_wrapper(func): 
    args['name'] = func.func_name 
    args['regex'] = regex 
    args['re'] = re.compile(regex, flags) 
    _hook_add(func, ['regex', (func, args)], 'regex') 
    return func 

if inspect.isfunction(regex): 
    raise ValueError("regex decorators require a regex to match against") 
else: 
    return regex_wrapper 

)

+0

들여 쓰기가 엉망입니다. –

답변

1

대답에서 별명을 제거하려면 O를 대신 say()를 사용해보십시오 f 플러그인 기능의 끝 부분에있는 보통 return. Bitcoin 플러그인은 다음을 사용합니다 :

from util import http, hook 

@hook.command(autohelp=False) 
def bitcoin(inp, say=None): 
    ".bitcoin -- gets current exchange rate for bitcoins from mtgox" 
    data = http.get_json("https://mtgox.com/code/data/ticker.php") 
    ticker = data['ticker'] 
    say("Current: \x0307$%(buy).2f\x0f - High: \x0307$%(high).2f\x0f" 
     " - Low: \x0307$%(low).2f\x0f - Volume: %(vol)s" % ticker) 
+0

고마워요, 효과가있었습니다. 이 플러그인을 삭제했기 때문에이 플러그인에 대해 알지 못했습니다. 정말 고마워! –