@@ -53,18 +53,27 @@ pub fn update_nags(comment: &IssueComment) -> DashResult<()> {
53
53
. first :: < GitHubUser > ( conn) ?;
54
54
55
55
let subteam_members = subteam_members ( & issue) ?;
56
+ let all_team_members = all_team_members ( ) ?;
56
57
57
58
// Attempt to parse all commands out of the comment
58
59
let mut any = false ;
59
60
for command in RfcBotCommand :: from_str_all ( & SETUP , & comment. body ) {
60
61
any = true ;
61
62
62
- // Don't accept bot commands from non-subteam members.
63
- // Early return because we'll just get here again...
64
- if subteam_members. iter ( ) . find ( |& u| u == & author) . is_none ( ) {
65
- info ! ( "command author ({}) doesn't appear in any relevant subteams" ,
66
- author. login) ;
67
- return Ok ( ( ) ) ;
63
+ if let RfcBotCommand :: StartPoll { ..} = command {
64
+ // Accept poll requests from any known user.
65
+ if all_team_members. iter ( ) . find ( |& u| u == & author) . is_none ( ) {
66
+ info ! ( "poll requester ({}) is not a known user" , author. login) ;
67
+ return Ok ( ( ) ) ;
68
+ }
69
+ } else {
70
+ // Don't accept most bot commands from non-subteam members.
71
+ // Early return because we'll just get here again...
72
+ if subteam_members. iter ( ) . find ( |& u| u == & author) . is_none ( ) {
73
+ info ! ( "command author ({}) doesn't appear in any relevant subteams" ,
74
+ author. login) ;
75
+ return Ok ( ( ) ) ;
76
+ }
68
77
}
69
78
70
79
debug ! ( "processing rfcbot command: {:?}" , & command) ;
@@ -633,6 +642,12 @@ where
633
642
)
634
643
}
635
644
645
+ /// Return a list of all known team members.
646
+ fn all_team_members ( ) -> DashResult < Vec < GitHubUser > >
647
+ {
648
+ specific_subteam_members ( |_| true )
649
+ }
650
+
636
651
/// Check if an issue comment is written by a member of one of the subteams
637
652
/// labelled on the issue.
638
653
fn subteam_members ( issue : & Issue ) -> DashResult < Vec < GitHubUser > > {
0 commit comments