本文整理汇总了Python中Irc类的典型用法代码示例。如果您正苦于以下问题:Python Irc类的具体用法?Python Irc怎么用?Python Irc使用的例子?那么恭喜您, 这里精选的类代码示例或许可以为您提供帮助。
在下文中一共展示了Irc类的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Python代码示例。
示例1: send
def send(self, *args):
print(self.nick + ": " + Irc.compile(*args))
t = self.lastsend - time.time() + 0.25
if t > 0:
time.sleep(t)
self.connection.sendall(Irc.compile(*args) + "\n")
self.lastsend = time.time()
示例2: privmsg
def privmsg(self, targ, text, priority = None):
Logger.log("c", self.instance + ": %s <- %s " % (targ, text))
for i in xrange(0, len(text), 350):
if priority:
Irc.instance_send(self.instance, ("PRIVMSG", targ, text[i:i+350]), priority = priority)
else:
Irc.instance_send(self.instance, ("PRIVMSG", targ, text[i:i+350]))
示例3: tip
def tip(req, arg):
"""%tip <target> <amount> - Sends 'amount' coins to the specified nickname"""
if len(arg) < 2:
return req.reply(gethelp("tip"))
to = arg[0]
acct, toacct = Irc.account_names([req.nick, to])
if not acct:
return req.reply_private("You are not identified with freenode services (see /msg NickServ help)")
if Transactions.lock(acct):
return req.reply_private("Your account is currently locked")
if not toacct:
if toacct == None:
return req.reply_private(to + " is not online")
else:
return req.reply_private(to + " is not identified with freenode services")
try:
amount = parse_amount(arg[1], acct)
except ValueError as e:
return req.reply_private(str(e))
token = Logger.token()
try:
Transactions.tip(token, acct, toacct, amount)
if Irc.equal_nicks(req.nick, req.target):
req.reply("Done [%s]" % (token))
else:
req.say("Such %s tipped much Ɖ%i to %s! (to claim /msg Doger help) [%s]" % (req.nick, amount, to, token))
req.privmsg(to, "Such %s has tipped you Ɖ%i (to claim /msg Doger help) [%s]" % (req.nick, amount, token), priority = 10)
except Transactions.NotEnoughMoney:
req.reply_private("You tried to tip Ɖ%i but you only have Ɖ%i" % (amount, Transactions.balance(acct)))
示例4: main
def main(args):
global irc
listener = Listener(IRC_RESTART, restartIRCHook)
getEventManager().addListener(listener)
host = args[1]
port = int(args[2])
channel = args[3]
if channel[0] != '#':
channel = '#' + channel
getEventManager().start()
irc = Irc(host, port, channel)
while running:
try:
i = raw_input()
if i == "quit" or i == "exit":
irc.disconnect()
getEventManager().stop()
break
except KeyboardInterrupt:
irc.disconnect()
getEventManager().stop()
break
time.sleep(1)
sys.exit()
示例5: tip
def tip(req, arg):
"""%tip <target> <amount> - Sends 'amount' coins to the specified nickname"""
if len(arg) < 2:
return req.reply("%tip <target> <amount>")
to = arg[0]
acct, toacct = Irc.account_names([req.nick, to])
if not acct:
return req.reply_private("You are not identified with freenode services (see /msg NickServ help)")
if not toacct:
if toacct == None:
return req.reply_private(to + " is not online")
else:
return req.reply_private(to + " is not identified with freenode services")
try:
amount = int(arg[1])
if amount <= 0:
raise ValueError()
amount = min(amount, 1000000000000)
except ValueError as e:
req.reply_private(repr(arg[1]) + " - invalid amount")
return None
with Logger.token() as token:
try:
Transactions.tip(acct, toacct, amount)
token.log("t", "acct:%s tipped %d to acct:%s(%d)" % (acct, amount, toacct, Transactions.balance(toacct)))
if Irc.equal_nicks(req.nick, req.target):
req.reply("Done [%s]" % (token.id))
else:
req.say("Such %s tipped much Ɖ%i to %s! (to claim /msg Doger help) [%s]" % (req.nick, amount, to, token.id))
Irc.instance_send(req.instance, "PRIVMSG", to, "Such %s has tipped you Ɖ%i (to claim /msg Doger help) [%s]" % (req.nick, amount, token.id))
except Transactions.NotEnoughMoney:
req.reply_private("You tried to tip Ɖ%i but you only have Ɖ%i" % (amount, Transactions.balance(acct)))
示例6: _help
def _help(req, arg):
"""%help - list of commands; %help <command> - help for specific command"""
if len(arg):
h = gethelp(arg[0])
if h:
req.reply(h)
else:
if not Irc.equal_nicks(req.target, req.nick):
return req.reply("I'm Doger, an IRC dogecoin tipbot. For more info do /msg Doger help")
acct = Irc.account_names([req.nick])[0]
if acct:
ident = "you're identified as \2" + acct + "\2"
else:
ident = "you're not identified"
req.say(
"I'm Doger, I'm an IRC dogecoin tipbot. To get help about a specific command, say \2%help <command>\2 Commands: %tip %balance %withdraw %deposit %mtip %donate %help".replace(
"%", Config.config["prefix"]
)
)
req.say(
(
"Note that to receive or send tips you should be identified with freenode services (%s). Please consider donating with %%donate. For any support questions, including those related to lost coins, join ##doger"
% (ident)
).replace("%", Config.config["prefix"])
)
示例7: tip
def tip(req, arg):
"""%tip <target> <amount> - Sends 'amount' coins to the specified nickname. Nickname can be suffixed with @ and an account name, if you want to make sure you are tipping the correct person"""
if len(arg) < 2:
return req.reply(gethelp("tip"))
to = arg[0]
acct, toacct = Irc.account_names([req.nick, target_nick(to)])
if not acct:
return req.reply_private("You are not identified with freenode services (see /msg NickServ help)")
if Transactions.lock(acct):
return req.reply_private("Your account is currently locked")
if not toacct:
if toacct == None:
return req.reply_private(target_nick(to) + " is not online")
else:
return req.reply_private(target_nick(to) + " is not identified with freenode services")
if not target_verify(to, toacct):
return req.reply_private("Account name mismatch")
try:
amount = parse_amount(arg[1], acct)
except ValueError as e:
return req.reply_private(str(e))
token = Logger.token()
try:
Transactions.tip(token, acct, toacct, amount)
if Irc.equal_nicks(req.nick, req.target):
req.reply("Done [%s]" % (token))
else:
req.say(" %s tipped BITB%i to %s! (to claim /msg Beaner help) [%s]" % (req.nick, amount, target_nick(to), token))
req.privmsg(target_nick(to), "%s has tipped you BITB%i (to claim /msg Beaner help) [%s]" % (req.nick, amount, token), priority = 10)
except Transactions.NotEnoughMoney:
req.reply_private("You tried to tip BITB%i but you only have BITB%i" % (amount, Transactions.balance(acct)))
示例8: mtip
def mtip(req, arg):
"""%mtip <targ1> <amt1> [<targ2> <amt2> ...] - Send multiple tips at once"""
if not len(arg) or len(arg) % 2:
return req.reply("%mtip <targ1> <amt1> [<targ2> <amt2> ...]")
acct = Irc.account_names([req.nick])[0]
if not acct:
return req.reply_private("You are not identified with freenode services (see /msg NickServ help)")
for i in range(0, len(arg), 2):
try:
if int(arg[i + 1]) <= 0:
raise ValueError()
except ValueError as e:
req.reply_private(repr(arg[i + 1]) + " - invalid amount")
return None
targets = []
amounts = []
total = 0
for i in range(0, len(arg), 2):
target = arg[i]
amount = int(arg[i + 1])
amount = min(amount, 1000000000000)
found = False
for i in range(len(targets)):
if Irc.equal_nicks(targets[i], target):
amounts[i] += amount
total += amount
found = True
break
if not found:
targets.append(target)
amounts.append(amount)
total += amount
balance = Transactions.balance(acct)
if total > balance:
return req.reply_private("You tried to tip Ɖ%i but you only have Ɖ%i" % (total, balance))
accounts = Irc.account_names(targets)
totip = {}
failed = ""
tipped = ""
for i in range(len(targets)):
if accounts[i]:
totip[accounts[i]] = amounts[i]
tipped += " %s %d" % (targets[i], amounts[i])
elif accounts[i] == None:
failed += " %s (offline)" % (targets[i])
else:
failed += " %s (unidentified)" % (targets[i])
with Logger.token() as token:
try:
Transactions.tip_multiple(acct, totip)
token.log("t", "acct:%s mtipped: %s" % (acct, repr(totip)))
tipped += " [%s]" % (token.id)
except Transactions.NotEnoughMoney:
return req.reply_private("You tried to tip Ɖ%i but you only have Ɖ%i" % (total, Transactions.balance(acct)))
output = "Tipped:" + tipped
if len(failed):
output += " Failed:" + failed
req.reply(output)
示例9: mtip
def mtip(req, arg):
"""%mtip <targ1> <amt1> [<targ2> <amt2> ...] - Send multiple tips at once"""
if not len(arg) or len(arg) % 2:
return req.reply(gethelp("mtip"))
acct = Irc.account_names([req.nick])[0]
if not acct:
return req.reply_private("You are not identified with freenode services (see /msg NickServ help)")
if Transactions.lock(acct):
return req.reply_private("Your account is currently locked")
for i in range(0, len(arg), 2):
try:
arg[i + 1] = parse_amount(arg[i + 1], acct)
except ValueError as e:
return req.reply_private(str(e))
targets = []
amounts = []
total = 0
for i in range(0, len(arg), 2):
target = arg[i]
amount = arg[i + 1]
found = False
for i in range(len(targets)):
if Irc.equal_nicks(targets[i], target):
amounts[i] += amount
total += amount
found = True
break
if not found:
targets.append(target)
amounts.append(amount)
total += amount
balance = Transactions.balance(acct)
if total > balance:
return req.reply_private("You tried to tip Ɖ%i but you only have Ɖ%i" % (total, balance))
accounts = Irc.account_names([target_nick(target) for target in targets])
totip = {}
failed = ""
tipped = ""
for i in range(len(targets)):
if accounts[i] == None:
failed += " %s (offline)" % (target_nick(targets[i]))
elif accounts[i] == False:
failed += " %s (unidentified)" % (target_nick(targets[i]))
elif not target_verify(targets[i], accounts[i]):
failed += " %s (mismatch)" % (targets[i])
else:
totip[accounts[i]] = totip.get(accounts[i], 0) + amounts[i]
tipped += " %s %d" % (target_nick(targets[i]), amounts[i])
token = Logger.token()
try:
Transactions.tip_multiple(token, acct, totip)
tipped += " [%s]" % (token)
except Transactions.NotEnoughMoney:
return req.reply_private("You tried to tip Ɖ%i but you only have Ɖ%i" % (total, Transactions.balance(acct)))
output = "Tipped:" + tipped
if len(failed):
output += " Failed:" + failed
req.reply(output)
示例10: main
def main(args):
global irc
config = ConfigParser.ConfigParser()
if (sys.argv != 2):
cfile = "bot.conf"
else:
cfile = args[1]
listener = Listener(IRC_RESTART, restartIRCHook)
getEventManager().addListener(listener)
__import__("plugins.logger")
try:
config.readfp(open(cfile))
except:
print "Error loading configuration file:", sys.exc_info()[1]
sys.exit(1)
host = config.get("main", "host")
port = config.get("main", "port")
channels = config.get("main", "channels")
nick = config.get("main", "nick")
print "Host: ", host
print "Port: ", port
print "Channels: ", channels
channels = channels.split(",")
port = int(port)
for i in range(len(channels)):
if channels[i][0] != '#':
channels[i] = '#' + channels[i]
getEventManager().start()
irc = Irc(host, port, channels, nick)
while running:
try:
i = raw_input()
if i == "quit" or i == "exit":
irc.disconnect()
getEventManager().stop()
break
except KeyboardInterrupt:
irc.disconnect()
getEventManager().stop()
break
time.sleep(1)
sys.exit()
示例11: message
def message(serv, source, target, text):
host = Irc.get_host(source)
Commands.Tracking.activity(source,target,serv)
if target != serv.nick and source == '[email protected]' and 'tipped' in text and 'to dogesoak' in text.lower():
try:
usr = text.split()[1]
req = Request(serv, target, usr)
val = int(text.split('much ',1)[1][2:].split(' ',1)[0])
try:
Commands.soak(req,[str(val)])
except:
req.say('An error occurred.')
#req.serv.send('PRIVMSG','Doger','tip ')
except:
print 'soaker error'
if Commands.lreq and target == serv.nick and source.split('!',1)[0] == 'Doger':
Commands.balancerepl(text)
if text[0] == '!' or target == serv.nick:
if serv.is_ignored(host):
print(serv.nick + ": (ignored) <" + Irc.get_nickname(source) + "> " + text)
return
print(serv.nick + ": <" + Irc.get_nickname(source) + "> " + text)
t = time.time()
score = serv.flood_score.get(host, (t, 0))
score = max(score[1] + score[0] - t, 0) + 4
if score > 40 and not serv.is_admin(source):
serv.ignore(host, 240)
serv.send("PRIVMSG", Irc.get_nickname(source), "You're sending commands too quickly. Your host is ignored for 240 seconds")
return
serv.flood_score[host] = (t, score)
if text[0] == '!':
text = text[1:]
src = Irc.get_nickname(source)
if target == serv.nick:
reply = src
else:
reply = target
if text.find(" ") == -1:
command = text
args = []
else:
command, args = text.split(" ", 1)
args = args.split(" ")
if command[0] != '_':
cmd = Commands.commands.get(command.lower(), None)
if not cmd.__doc__ or cmd.__doc__.find("admin") == -1 or serv.is_admin(source):
if cmd:
req = Request(serv, reply, source)
try:
ret = cmd(req, args)
except Exception as e:
type, value, tb = sys.exc_info()
traceback.print_tb(tb)
req.reply(repr(e))
示例12: donate
def donate(req, arg):
"""%donate <amount> - Donate 'amount' coins to the developers of this bot"""
if len(arg) < 1:
return req.reply(gethelp("donate"))
acct = Irc.account_names([req.nick])[0]
if not acct:
return req.reply_private("You are not identified with freenode services (see /msg NickServ help)")
if Transactions.lock(acct):
return req.reply_private("Your account is currently locked")
toacct = "mniip"
if arg[0] == "all":
arg[0] = str(Transactions.balance(acct))
try:
amount = float(arg[0])
if math.isnan(amount):
raise ValueError
except ValueError as e:
return req.reply_private(repr(arg[0]) + " - invalid amount")
if amount > 1e12:
return req.reply_private(repr(arg[0]) + " - invalid amount (value too large)")
if amount < 1:
return req.reply_private(repr(arg[0]) + " - invalid amount (should be 1 or more)")
if not int(amount) == amount:
return req.reply_private(repr(arg[0]) + " - invalid amount (should be integer)")
amount = int(amount)
token = Logger.token()
try:
Transactions.tip(token, acct, toacct, amount)
req.reply("Donated Ɖ%i [%s]" % (amount, token))
req.privmsg(toacct, "Such %s donated Ɖ%i [%s]" % (req.nick, amount, token), priority = 10)
except Transactions.NotEnoughMoney:
req.reply_private("You tried to donate Ɖ%i but you only have Ɖ%i" % (amount, Transactions.balance(acct)))
示例13: _nick
def _nick(instance, source, newnick):
nick = Irc.get_nickname(source)
for channel in Global.account_cache:
if nick in Global.account_cache[channel]:
Global.account_cache[channel][newnick] = Global.account_cache[channel][nick]
Logger.log("w", "%s -> %s in %s" % (nick, newnick, channel))
del Global.account_cache[channel][nick]
示例14: withdraw
def withdraw(req, arg):
"""%withdraw <address> [amount] - Sends 'amount' coins to the specified dogecoin address. If no amount specified, sends the whole balance"""
if len(arg) == 0:
return req.reply("%withdraw <address> [amount]")
acct = Irc.account_names([req.nick])[0]
if not acct:
return req.reply_private("You are not identified with freenode services (see /msg NickServ help)")
if len(arg) == 1:
amount = max(Transactions.balance(acct) - 1, 1)
else:
try:
amount = int(arg[1])
if amount <= 0:
raise ValueError()
amount = min(amount, 1000000000000)
except ValueError as e:
req.reply_private(repr(arg[1]) + " - invalid amount")
return None
to = arg[0]
if not Transactions.verify_address(to):
return req.reply_private(to + " doesn't seem to be a valid dogecoin address")
with Logger.token() as token:
try:
tx = Transactions.withdraw(acct, to, amount)
token.log("t", "acct:%s withdrew %d, TX id is %s (acct:%s(%d))" % (acct, amount, tx, acct, Transactions.balance(acct)))
req.reply("Coins have been sent, see http://dogechain.info/tx/%s [%s]" % (tx, token.id))
except Transactions.NotEnoughMoney:
req.reply_private("You tried to withdraw Ɖ%i (+Ɖ1 TX fee) but you only have Ɖ%i" % (amount, Transactions.balance(acct)))
except Transactions.InsufficientFunds:
token.log("te", "acct:%s tried to withdraw %d" % (acct, amount))
req.reply("Something went wrong, report this to mniip [%s]" % (token.id))
示例15: withdraw
def withdraw(req, arg):
"""%withdraw <address> [amount] - Sends 'amount' coins to the specified dogecoin address. If no amount specified, sends the whole balance"""
if len(arg) == 0:
return req.reply(gethelp("withdraw"))
acct = Irc.account_names([req.nick])[0]
if not acct:
return req.reply_private("You are not identified with freenode services (see /msg NickServ help)")
if Transactions.lock(acct):
return req.reply_private("Your account is currently locked")
if len(arg) == 1:
amount = max(Transactions.balance(acct) - 1, 1)
else:
try:
amount = parse_amount(arg[1], acct, all_offset = -1)
except ValueError as e:
return req.reply_private(str(e))
to = arg[0]
if not Transactions.verify_address(to):
return req.reply_private(to + " doesn't seem to be a valid dogecoin address")
token = Logger.token()
try:
tx = Transactions.withdraw(token, acct, to, amount)
req.reply("Coins have been sent, see http://dogechain.info/tx/%s [%s]" % (tx, token))
except Transactions.NotEnoughMoney:
req.reply_private("You tried to withdraw Ɖ%i (+Ɖ1 TX fee) but you only have Ɖ%i" % (amount, Transactions.balance(acct)))
except Transactions.InsufficientFunds:
req.reply("Something went wrong, report this to mniip [%s]" % (token))
Logger.irclog("InsufficientFunds while executing '%s' from '%s'" % (req.text, req.nick))