87 lines
2.2 KiB
Python
87 lines
2.2 KiB
Python
import requests
|
|
from urllib.parse import urlencode
|
|
|
|
class schiavo:
|
|
"""
|
|
Schiavo Bot class
|
|
"""
|
|
def __init__(self, botURL=None, prefix="", maxRetries=20):
|
|
"""
|
|
Initialize a new schiavo bot instance
|
|
|
|
:param botURL: schiavo api url.
|
|
:param prefix: text to prepend in every message, can be empty.
|
|
:param maxRetries: max retries if api request fail. 0 = don't retry.
|
|
"""
|
|
self.botURL = botURL
|
|
self.maxRetries = maxRetries
|
|
self.prefix = prefix
|
|
|
|
def sendMessage(self, channel, message, noPrefix=False):
|
|
"""
|
|
Send a generic message through schiavo api
|
|
|
|
:param channel: api channel.
|
|
:param message: message content.
|
|
:param noPrefix: if True, don't prepend prefix to message.
|
|
:return:
|
|
"""
|
|
if self.botURL is None:
|
|
return
|
|
for _ in range(0, self.maxRetries):
|
|
try:
|
|
finalMsg = "{prefix} {message}".format(prefix=self.prefix if not noPrefix else "", message=message)
|
|
requests.get("{}/{}?{}".format(self.botURL, channel, urlencode({ "message": finalMsg })))
|
|
break
|
|
except requests.RequestException:
|
|
continue
|
|
|
|
def sendConfidential(self, message, noPrefix=False):
|
|
"""
|
|
Send a message to #bunk
|
|
|
|
:param message: message content.
|
|
:param noPrefix: if True, don't prepend prefix to message.
|
|
:return:
|
|
"""
|
|
self.sendMessage("bunk", message, noPrefix)
|
|
|
|
def sendStaff(self, message, noPrefix=False):
|
|
"""
|
|
Send a message to #staff
|
|
|
|
:param message: message content.
|
|
:param noPrefix: if True, don't prepend prefix to message.
|
|
:return:
|
|
"""
|
|
self.sendMessage("staff", message, noPrefix)
|
|
|
|
def sendGeneral(self, message, noPrefix=True):
|
|
"""
|
|
Send a message to #general
|
|
|
|
:param message: message content.
|
|
:param noPrefix: if True, don't prepend prefix to message.
|
|
:return:
|
|
"""
|
|
self.sendMessage("general", message, noPrefix)
|
|
|
|
def sendChatlog(self, message, noPrefix=True):
|
|
"""
|
|
Send a message to #chatlog.
|
|
|
|
:param message: message content.
|
|
:param noPrefix: if True, don't prepend prefix to message.
|
|
:return:
|
|
"""
|
|
self.sendMessage("chatlog", message, noPrefix)
|
|
|
|
def sendCM(self, message, noPrefix=False):
|
|
"""
|
|
Send a message to #communitymanagers
|
|
|
|
:param message: message content.
|
|
:param noPrefix: if True, don't prepend prefix to message.
|
|
:return:
|
|
"""
|
|
self.sendMessage("cm", message, noPrefix) |