Plugin Respondendo

De Pontão Nós Digitais

Do final do microtutorial anterior,

1) arrume o arquivo plugins/Minimum/plugin.py

Para que a classe Minimum, herdeira de callbacks.Plugin, fique assim (basta adicionar poucas linhas à classe que já vem por padrão no plugin wizard):

class Minimum(callbacks.Plugin):
    """The minimum a plugin must have to respond."""

    def respond(self, irc, msg, args):
        """Gives a response when called"""
        irc.reply("This is my personal response. Eh aqui que eu respondo.")
    respond = wrap(respond)


2) Faça-o responder utilizando módulos da instalação Python

No próprio plugin.py, basta importar o módulo e fazer a função na classe:

import random
class Minimum(callbacks.Plugin):
    """The minimum a plugin must have to respond."""

    def rand01(self,irc,msg,args):
        """Return 0-1 random float value """
        irc.reply(str(random.random()))

    def respond(self, irc, msg, args):
        """Gives a response when called"""
        irc.reply("This is my personal response. Eh aqui que eu respondo.")
    respond = wrap(respond)

3) Inicie o bot e use o plugin

22:57 < o0o0o> coBot205: unload Minimum
22:57 < coBot205> o0o0o: The operation succeeded.
22:57 < o0o0o> coBot205: load Minimum
22:57 < coBot205> o0o0o: The operation succeeded.
22:57 < o0o0o> coBot205: list minimum
22:57 < coBot205> o0o0o: rand01 and respond
22:57 < o0o0o> coBot205: rand01
22:57 < coBot205> o0o0o: 0.0833759026193
22:57 < o0o0o> coBot205: rand01
22:57 < coBot205> o0o0o: 0.121191466542
22:57 < o0o0o> coBot205: respond
22:57 < coBot205> o0o0o: This is my personal response. Eh aqui que eu respondo.

4) Um parâmetro de entrada

class Minimum(callbacks.Plugin):
    """The minimum a plugin must have to respond."""

    def oneparam(self, irc, msg, args, n):
        """[<numero de elementos>]
        
        Returns a list with <number of elements>"""
        irc.reply(str(range(n)))
    oneparam = wrap(oneparam, [additional(('int', 'number of elements'), 5)])

5) Vários parâmetros de entrada

Neste caso, o primeiro parâmetro é do tipo especificado. Os parâmetros seguintes são agrupados na forma de uma lista de strings. Portanto:

    def someparams(self, irc, msg, args, n, m):
        """[<numero de elementos> <numero de elementos2>]
        
        Returns lists with gine lengths"""
        #irc.reply(str( range(n)+range(m[1])))
        lists= str(range(n)) # first argument is of the type desired
        for element in m:
            lists += str(range(int(element))) # Because m is a list of strings
        irc.reply(lists)

    someparams = wrap(someparams, ['int',many('anything')])

X) Feito. Faça testes.

O segundo commit do repositório contempla estas mudanças:

   $ git clone git://labmacambira.git.sourceforge.net/gitroot/labmacambira/supyTutorial