yield from asyncio.sleep(rsstime.value)
@asyncio.coroutine
-def give_order(order, digest = None):
- channel = client.get_channel(str(order['channel']))
- if channel is None:
- log.warning("Can't get channel for order {}".format(order['message']))
- return
-
- # @everyone mention mangles the digest
- text = order['message']
- if digest is None:
- digest = hashlib.sha224(text.encode('utf-8')).hexdigest()
- text = '@everyone\n{}'.format(text)
-
- cutoff = datetime.datetime.utcnow() - datetime.timedelta(0, order['seconds'])
- logs = yield from client.logs_from(channel, after = cutoff)
- for message in logs:
- raw = re.sub(r'^@everyone\s', '', message.content).strip()
- if hashlib.sha224(raw.encode('utf-8')).hexdigest() == digest:
- log.debug('Saw previously posted order with digest {}'.format(digest))
- return
-
- try:
- if dryrun:
- log.info('Dryrun: Not posting to {}: {}'.format(channel, text))
- else:
- log.info('Posting to {}: {}'.format(channel, text))
- yield from say(channel, text)
- except:
- pass
-
-@asyncio.coroutine
def can_manage_announcements(member, channel, command, **args):
# Anyone can list announcements.
if command == 'list':