마무리

8863 단어 opensource

연결 명령



내가 취한 마지막 단계는 그다지 복잡하지 않았습니다.
봅시다 pajbot/dispatch.py
이것은 봇의 동작에 명령을 연결하는 파일입니다. 예를 들어, 무언가를 상기시키는 논리를 볼 수 있습니다.

//...
@staticmethod
    def remindme(bot, source, message, event, args):
        if not message:
            bot.say(f"{source}, No message provided! Syntax: !remindme TIME MESSAGE")
            return False

        parts = message.split(" ")
        if len(parts) < 1:
            # Not enough arguments
            return False

        delay = int(parts[0])
        reminder_text = " ".join(parts[1:]).strip()

        if delay < 30:
            bot.say(f"{source}, You cannot set a reminder for less than 30 seconds!")
            return False

        if reminder_text == "":
            bot.say(f"{source}, I will remind you in {delay} seconds. SeemsGood")
            bot.execute_delayed(delay, bot.say, f"{source}, reminder from yourself ({delay}s ago)")
        else:
            bot.say(f"{source}, I will remind you of '{reminder_text}' in {delay} seconds. SeemsGood")
            bot.execute_delayed(delay, bot.say, f"{source}, reminder from yourself ({delay}s ago): {reminder_text}")


https://github.com/sirinoks/pajbot/commit/866885ee4aa02e16141ad4d15382099fa55ade2f

여기에서 내 명령을 옵션에 연결했습니다.

마지막으로 명령을 사용하려고 할 때 몇 가지 피드백을 추가하여 사용자가 무엇이 잘못되었는지 명확하게 알 수 있습니다.
To fix command's behavior

# The command has been disabled
        if not self.chat_enabled:
            if self.notify_on_error:
                bot.whisper(
                    source,
                    f"This command is disabled.",
                )
            return False


다 끝났어?



그것이 내 코딩의 끝이었습니다. 테스트를 위해 봇을 다시 활성화하면서 명령을 비활성화하려고 시도했고 결국 작동했습니다(물론 여기저기서 약간의 변경이 있었지만 대부분 간단한 실수였습니다).

보시다시피 새로 추가된 명령을 편집할 수 있으며 실행되지 않지만 해당 경고 메시지를 보냅니다.


가장 어려운 부분은 이 모든 것이 어떻게 함께 작동하는지 알아내는 것이었습니다. 전체 프로젝트의 아키텍처, 사물이 연결되는 방식 및 함께 제공되는 모든 구성 요소. 어디에, 무엇을 작성해야 하는지 정확히 파악하기 어려웠지만 코드 자체는 논리적 딜레마가 아니었습니다.

Python으로 작업하는 것은 그리 어렵지 않았습니다. 이미 존재하는 코드를 항상 보고 이를 구문 참조로 사용할 수 있습니다.

이제 가장 중요한 부분



내 결과에 만족한 후 스크립트로 내 코드를 확인하고 my PR 를 푸시하는 드릴을 수행한 후 그게 될 것이라고 생각했습니다. 내가 해냈어, 대단해, ​​문제를 해결해, 멋져.

그리고 나서 피드백을 보았습니다. 내가 한 것은... 그가 의도한 바가 아니었습니다.



그가 의미하는 것은 채팅에서 사용할 수 없도록 만드는 것이 아니라 명령을 완전히 비활성화하는 것입니다. 그러나 disabled 하면 명령이 완전히 삭제됩니다. 그 동작을 변경하는 것은 이 작업에서보다 훨씬 더 오랜 시간이 걸릴 것입니다.

내가 수정하려고 시도한 다른 문제는 이미 다루어진 것으로 밝혀졌지만 문제를 닫지 않았습니다.


결국, 내가 처리하려고 시도한 추가 수정 사항이었습니다. 잘 되지 않은 큰 문제는 아닙니다. 그러나 주요 문제가 내가 염두에 두었던 것이 아니라는 사실이 상당히 실망스럽습니다.

글쎄요... 그 uuuuh.... 와... 알고 보니 필요하지 않은 작업을 수행했고 내 PR이 필요하지 않았습니다. 그리고 솔직히 나는 그 사람과 더 잘 의사 소통할 수 있었지만 동시에 그들이 다른 것을 의미한다는 것을 알았습니다.

결론



지금까지 내가 얻은 경험으로 볼 때 가장 좋은 일은 프로젝트의 내용을 제대로 이해할 수 있을 만큼 충분히 프로젝트 주변에 있을 때 완료되는 것 같습니다. 코드와 개념에 이미 익숙한 사람들에게 물어볼 수 있습니다. 그렇지 않으면 겉보기에 단순한 작업에서 많은 혼란에 빠지는 것 같습니다.

좋은 웹페이지 즐겨찾기