diff --git a/changelog.d/756.bugfix b/changelog.d/756.bugfix new file mode 100644 index 00000000..45d46256 --- /dev/null +++ b/changelog.d/756.bugfix @@ -0,0 +1 @@ +Fix issue that caused channel name to not be displayed in the list command output. diff --git a/src/AdminCommands.ts b/src/AdminCommands.ts index c4b987d0..f0cc3990 100644 --- a/src/AdminCommands.ts +++ b/src/AdminCommands.ts @@ -102,7 +102,7 @@ export class AdminCommands { } const slack = r.SlackChannelId ? - `${channelName} (${r.SlackChannelId})` : + `#${channelName} (${r.SlackChannelId})` : channelName; let status = r.getStatus(); diff --git a/src/Main.ts b/src/Main.ts index c69eb9c1..298142a2 100644 --- a/src/Main.ts +++ b/src/Main.ts @@ -1405,7 +1405,7 @@ export class Main { } let channelInfo: ConversationsInfoResponse|undefined; - if (slackClient && opts.slack_channel_id && opts.team_id) { + if (slackClient && opts.slack_channel_id) { // PSA: Bots cannot join channels, they have a limited set of APIs https://api.slack.com/methods/bots.info channelInfo = (await slackClient.conversations.info({ channel: opts.slack_channel_id})) as ConversationsInfoResponse; diff --git a/src/SlackEventHandler.ts b/src/SlackEventHandler.ts index eeaa527f..9d0c386c 100644 --- a/src/SlackEventHandler.ts +++ b/src/SlackEventHandler.ts @@ -23,10 +23,12 @@ const log = new Logger("SlackEventHandler"); /** * https://api.slack.com/events/channel_rename */ -interface ISlackEventChannelRename extends ISlackEvent { - id: string; - name: string; - created: number; +interface ISlackEventChannelRename extends Omit { + channel: { + id: string; + name: string; + created: number; + } } /** @@ -190,7 +192,10 @@ export class SlackEventHandler extends BaseSlackHandler { await this.handleReaction(event as ISlackEventReaction, teamId); break; case "channel_rename": - await this.handleChannelRenameEvent(event as ISlackEventChannelRename); + // The rename event is not compatible with ISlackEvent because the channel property is an object, + // not a string. So we resort to casting to unknown first. + // TODO: Move channel property out of ISlackEvent, into each event type, where relevant. + await this.handleChannelRenameEvent((event as unknown) as ISlackEventChannelRename); break; case "team_domain_change": await this.handleDomainChangeEvent(event as ISlackEventTeamDomainChange, teamId); @@ -349,12 +354,10 @@ export class SlackEventHandler extends BaseSlackHandler { } private async handleChannelRenameEvent(event: ISlackEventChannelRename) { - // TODO test me. and do we even need this? doesn't appear to be used anymore - const room = this.main.rooms.getBySlackChannelId(event.id); + const room = this.main.rooms.getBySlackChannelId(event.channel.id); if (!room) { throw new Error("unknown_channel"); } - const channelName = `#${event.name}`; - room.SlackChannelName = channelName; + room.SlackChannelName = event.channel.name; if (room.isDirty) { await this.main.datastore.upsertRoom(room); }