def create_tables(self):
self.open_db()
- cursor = self.query('create table if not exists factions (id char(36) not null, bot_id varchar(32) not null, member_id varchar(32) not null, server_id varchar(32) not null, channel_id varchar(32) not null, newsflash_channel_id varchar(32), faction_id int not null, name varchar(128) not null, state_id int not null, interval int not null default 86400, updated datetime)')
+ cursor = self.query('create table if not exists factions (id char(36) not null, bot_id varchar(32) not null, member_id varchar(32) not null, server_id varchar(32) not null, channel_id varchar(32), newsflash_channel_id varchar(32), faction_id int not null, name varchar(128) not null, state_id int not null, interval int not null default 86400, updated datetime)')
cursor = self.query('create unique index if not exists factions_id on factions (id)')
cursor = self.query('create index if not exists factions_bot_id on factions (bot_id)')
cursor = self.query('create table if not exists faction_names (faction_id int not null, name varchar(128) not null)')
cursor = self.query('create unique index if not exists faction_influence_checksum on faction_influence (checksum, eddb_id, faction_id)')
cursor = self.query('create table if not exists faction_trend (checksum char(32) not null, eddb_id int not null, faction_id int not null, state_id int not null, trend int not null, pending boolean)')
cursor = self.query('create unique index if not exists faction_trend_state on faction_trend (checksum, eddb_id, faction_id, pending)')
- cursor = self.query('create table if not exists systems (id char(36) not null, bot_id varchar(32) not null, member_id varchar(32) not null, server_id varchar(32) not null, name varchar(128) not null, channel_id varchar(32) not null, newsflash_channel_id varchar(32), eddb_id int not null, interval int not null default 86400, updated datetime)')
+ cursor = self.query('create table if not exists systems (id char(36) not null, bot_id varchar(32) not null, member_id varchar(32) not null, server_id varchar(32) not null, name varchar(128) not null, channel_id varchar(32), newsflash_channel_id varchar(32), eddb_id int not null, interval int not null default 86400, updated datetime)')
cursor = self.query('create unique index if not exists systems_id on systems (id)')
cursor = self.query('create index if not exists systems_bot_id on systems (bot_id)')
self.dbh.commit()
text += ' last updated at {}'.format(bot.iso8601(tracked.updated))
else:
offset = now
- if offset is not None and offset <= now:
+ if tracked.channel_id and offset is not None and offset <= now:
if tracked.interval:
text += ' scheduled for {}'.format(bot.iso8601(offset + tracked.interval))
text += '**'
text += ' every {}'.format(bot.unparse_seconds(int(tracked.interval)))
if tracked.is_private:
text += ' in private'
- else:
+ elif tracked.channel_id is not None:
text += ' in <#{}>'.format(tracked.channel_id)
if tracked.newsflash_channel_id:
text += ' news <#{}>'.format(tracked.newsflash_channel_id)
await bot.say_many(destination, lines)
async def report_tracked_faction(self, tracked):
+ if tracked.channel_id is None:
+ return
+
update = {}
update['updated'] = self.now()
channel = None
- newsflash_channel = None
if tracked.is_private:
for server in client.servers:
try:
member = server.get_member(tracked.member_id)
channel = await client.start_private_message(member)
- if tracked.newsflash_channel_id is not None:
- newsflash_channel = channel
break
except:
log.exception('report_tracked_faction')
update['updated'] = self.now()
channel = None
- newsflash_channel = None
if tracked.is_private:
for server in client.servers:
try:
member = server.get_member(tracked.member_id)
channel = await client.start_private_message(member)
- if tracked.newsflash_channel_id is not None:
- newsflash_channel = channel
break
except:
log.exception('report_tracked_system')
elif arg in ['in', 'news']:
if arg == 'in':
k = 'channel_id'
+ s = 'server_id'
else:
k = 'newsflash_channel_id'
+ s = 'newsflash_server_id'
if param == 'here':
if message.channel.is_private:
parsed[k] = 'private'
- if arg == 'in':
- parsed['server_id'] = 'private'
+ parsed[s] = 'private'
ok = True
else:
parsed[k] = message.channel.id
- if arg == 'in':
- parsed['server_id'] = message.channel.server.id
+ parsed[s] = message.channel.server.id
ok = True
elif param == 'private':
parsed[k] = 'private'
- if arg == 'in':
- parsed['server_id'] = 'private'
+ parsed[s] = 'private'
ok = True
elif param:
channel = bot.parse_channel(param, author = message.author, voice_ok = False)
if channel is not None:
parsed[k] = channel.id
- if arg == 'in':
- parsed['server_id'] = channel.server.id
+ parsed[s] = channel.server.id
ok = True
else:
break
await bot.say(message.channel, 'Who?' if what == 'faction' else 'Where?')
return None
- if not editing and 'channel_id' not in parsed:
+ if not editing and 'channel_id' not in parsed and 'newsflash_channel_id' not in parsed:
log.info('No channel provided.')
await bot.say(message.channel, 'Channel?')
return None
- if 'newflash_channel_id' in parsed:
- if parsed['newsflash_channel_id'] is not None:
- if parsed['channel'] == 'private':
+ if 'newsflash_channel_id' in parsed:
+ if 'channel_id' in parsed:
+ if parsed['channel_id'] == 'private':
if parsed['newsflash_channel_id'] != 'private':
log.info('News flash channel must be private if report channel is private.')
await bot.say(message.channel, 'Flash private!')
log.info('News flash channel must be on same server.')
await bot.say(message.channel, 'Flash channel server!')
return None
+ else:
+ parsed['server_id'] = parsed['newsflash_server_id']
+ del(parsed['newsflash_server_id'])
if not editing:
parsed['updated'] = self.now()