2011-03-28 6 views
4

소켓을 사용하여 irc bot을 설정했습니다. 몇 가지 명령을 추가했지만 "설문 조사"기능을 추가하고 싶습니다. 이상적으로, 봇이 형식으로 명령을받을 것이다 :irc 봇을 통해 폴링을 수행하려면 어떻게해야합니까?

내가 투표 한 사용자를 확인하고 일정 시간 후 설문 조사를 종료 가겠어요 어떻게

!poll <name> <opt1> <opt2> <opt3> <time>

?

미리 감사드립니다.

Desperate Python Beginner.

편집 : 응답 녀석 들께 고마워, 나는 그렇지 않으면 어떻게해야 할지를 알 수 없기 때문에 글로벌 바를 사용하여 갔다. 다시 한번 고마워요!

+0

이것은 두 가지 질문처럼 보입니다. 1) 사용자 지정 명령으로 IRC 봇을 만드는 방법 2) 소프트웨어 폴링을 디자인하는 방법 – Daenyth

+2

정확히 어떤 문제가 있습니까? 또한 어떤 형식의 데이터가 들어 오나요? – Philip

+0

@Daenyth : 나는 커스텀 커맨드를 많이 만들었다. –

답변

1

글쎄, 내 파이썬으로 약간 녹슬었지만 대답 할 수있을 것 같아. - 그래도 좋은 대답은 아닐지 몰라. 당신이 한 번에가는 많은 여론 조사를 할 계획이라면

, 당신은 설문 조사와 같은 사용자 정의 클래스의 여러 인스턴스를 포함하는 사전을 구현할 수 있습니다 .. 여기에 가능한 솔루션입니다 : 물론

class PollVotes(object): 
    def __init__(self): 
     self.votes = [] 
     self.stoptime = "some date/time" #I can't remember how to do this bit ;) 

    def add_vote(self, vote_value): 
     self.votes.append(vote_value); 

    def tally_votes(self): 
     return self.votes.size() 

    def has_closed(self): 
     if time_now >= self.stoptime: # I forget how you'd do this exactly, but it's for sake of example 
      return True 
     else: 
      return False 

#then use it something like this 
poll_list = {} 
#irc processing... 
if got_vote_command: 
    if poll_list["channel_or_poll_name"].has_ended(): 
     send("You can no longer vote.") 
    else: 
     poll_list["channel_or_poll_name"].add_vote(persons_vote) 
     #send the tally 
     send("%d people have now voted!" % poll_list["channel_or_poll_name"].tally_votes()) 

는, 당신은 할 것 투표에 여러 값을 허용하거나 투표를 원하는 사람을 기록하는 등 투표 요구 사항에 맞게 투표 클래스를 편집 할 수 있습니다.

투표가 종료되었는지 확인하는 방법은 다음과 같습니다. poll 클래스는 정지 시간을 가지며, 그 시간이 경과했는지의 여부를 True/False로 반환하는 함수가 있습니다. 아마도 날짜/시간 모듈에 대한 문서를 보면 ...?

어쨌든 도움이되기를 바랍니다.

+0

'has_closed'는'return time_now> = self.stoptime' 일 수 있습니다. if 문은 필요 없습니다 :) – Daenyth

관련 문제