|
|
@ -13,7 +13,7 @@ func (b *bot) checkPermissionAndExecute(requiredRole string, m chat1.MsgSummary, |
|
|
|
// currently this doesn't work due to a keybase bug unless you're in the role of resticted bot
|
|
|
|
// currently this doesn't work due to a keybase bug unless you're in the role of resticted bot
|
|
|
|
// the workaround is to check the general channel the old way
|
|
|
|
// the workaround is to check the general channel the old way
|
|
|
|
// so first check the new way
|
|
|
|
// so first check the new way
|
|
|
|
conversation, err := b.k.ListMembersOfConversation(m.ConvID) |
|
|
|
members, err := b.k.ListMembersOfConversation(m.ConvID) |
|
|
|
if err != nil { |
|
|
|
if err != nil { |
|
|
|
eid := b.logError(err) |
|
|
|
eid := b.logError(err) |
|
|
|
b.k.ReactByConvID(m.ConvID, m.Id, "Error ID %s", eid) |
|
|
|
b.k.ReactByConvID(m.ConvID, m.Id, "Error ID %s", eid) |
|
|
@ -23,19 +23,19 @@ func (b *bot) checkPermissionAndExecute(requiredRole string, m chat1.MsgSummary, |
|
|
|
// check if the length of the lists are zero
|
|
|
|
// check if the length of the lists are zero
|
|
|
|
// it'll look like this:
|
|
|
|
// it'll look like this:
|
|
|
|
// {"owners":[],"admins":[],"writers":[],"readers":[],"bots":[],"restrictedBots":[]}
|
|
|
|
// {"owners":[],"admins":[],"writers":[],"readers":[],"bots":[],"restrictedBots":[]}
|
|
|
|
if len(conversation.Members.Owners) == 0 && |
|
|
|
if len(members.Owners) == 0 && |
|
|
|
len(conversation.Members.Admins) == 0 && |
|
|
|
len(members.Admins) == 0 && |
|
|
|
len(conversation.Members.Writers) == 0 && |
|
|
|
len(members.Writers) == 0 && |
|
|
|
len(conversation.Members.Readers) == 0 && |
|
|
|
len(members.Readers) == 0 && |
|
|
|
len(conversation.Members.Bots) == 0 && |
|
|
|
len(members.Bots) == 0 && |
|
|
|
len(conversation.Members.RestrictedBots) == 0 { |
|
|
|
len(members.RestrictedBots) == 0 { |
|
|
|
channel := chat1.ChatChannel{ |
|
|
|
channel := chat1.ChatChannel{ |
|
|
|
Name: m.Channel.Name, |
|
|
|
Name: m.Channel.Name, |
|
|
|
MembersType: m.Channel.MembersType, |
|
|
|
MembersType: m.Channel.MembersType, |
|
|
|
TopicName: "general", |
|
|
|
TopicName: "general", |
|
|
|
} |
|
|
|
} |
|
|
|
// re-map the members using the workaround, in case you're not in the restricted bot role
|
|
|
|
// re-map the members using the workaround, in case you're not in the restricted bot role
|
|
|
|
conversation, err = b.k.ListMembersOfChannel(channel) |
|
|
|
members, err = b.k.ListMembersOfChannel(channel) |
|
|
|
if err != nil { |
|
|
|
if err != nil { |
|
|
|
eid := b.logError(err) |
|
|
|
eid := b.logError(err) |
|
|
|
b.k.ReactByConvID(m.ConvID, m.Id, "Error ID %s", eid) |
|
|
|
b.k.ReactByConvID(m.ConvID, m.Id, "Error ID %s", eid) |
|
|
@ -59,7 +59,7 @@ func (b *bot) checkPermissionAndExecute(requiredRole string, m chat1.MsgSummary, |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
// then descend permissions from top down
|
|
|
|
// then descend permissions from top down
|
|
|
|
for _, member := range conversation.Members.Owners { |
|
|
|
for _, member := range members.Owners { |
|
|
|
if strings.ToLower(member.Username) == strings.ToLower(m.Sender.Username) { |
|
|
|
if strings.ToLower(member.Username) == strings.ToLower(m.Sender.Username) { |
|
|
|
f(m) |
|
|
|
f(m) |
|
|
|
return |
|
|
|
return |
|
|
@ -72,7 +72,7 @@ func (b *bot) checkPermissionAndExecute(requiredRole string, m chat1.MsgSummary, |
|
|
|
return |
|
|
|
return |
|
|
|
} |
|
|
|
} |
|
|
|
// admins
|
|
|
|
// admins
|
|
|
|
for _, member := range conversation.Members.Admins { |
|
|
|
for _, member := range members.Admins { |
|
|
|
if strings.ToLower(member.Username) == strings.ToLower(m.Sender.Username) { |
|
|
|
if strings.ToLower(member.Username) == strings.ToLower(m.Sender.Username) { |
|
|
|
f(m) |
|
|
|
f(m) |
|
|
|
return |
|
|
|
return |
|
|
@ -83,7 +83,7 @@ func (b *bot) checkPermissionAndExecute(requiredRole string, m chat1.MsgSummary, |
|
|
|
return |
|
|
|
return |
|
|
|
} |
|
|
|
} |
|
|
|
// writers
|
|
|
|
// writers
|
|
|
|
for _, member := range conversation.Members.Writers { |
|
|
|
for _, member := range members.Writers { |
|
|
|
if strings.ToLower(member.Username) == strings.ToLower(m.Sender.Username) { |
|
|
|
if strings.ToLower(member.Username) == strings.ToLower(m.Sender.Username) { |
|
|
|
f(m) |
|
|
|
f(m) |
|
|
|
return |
|
|
|
return |
|
|
@ -94,7 +94,7 @@ func (b *bot) checkPermissionAndExecute(requiredRole string, m chat1.MsgSummary, |
|
|
|
return |
|
|
|
return |
|
|
|
} |
|
|
|
} |
|
|
|
// readers
|
|
|
|
// readers
|
|
|
|
for _, member := range conversation.Members.Readers { |
|
|
|
for _, member := range members.Readers { |
|
|
|
if strings.ToLower(member.Username) == strings.ToLower(m.Sender.Username) { |
|
|
|
if strings.ToLower(member.Username) == strings.ToLower(m.Sender.Username) { |
|
|
|
f(m) |
|
|
|
f(m) |
|
|
|
return |
|
|
|
return |
|
|
|