수색…


비고

트 위치 채팅은 간단한 IRC 채팅입니다. 심각한 개발의 경우, 가장 종합적이고 일반적인 자원 인 http://ircdocs.horse/를 포함하여 여러 문서가 있습니다.

연결, 악수

IRC는 기본, 평문 기반의 TCP 프로토콜입니다. 트 위치에 연결하는 것은 일반 IRC 서비스와 마찬가지로 인증에 차이가 있습니다.

연결 시작> 핸드 쉐이크> 사용법

악수는 정기적으로 가장 어려운 부분입니다.

서버에 대한 연결을 구축 한 후 PASS 를 입력 한 다음 NICK . 여기서 PASS 는 OAuth-Token ( 여기서 생성 할 수 있음)이고 USER 는이 OAuth 토큰의 사용자 이름입니다.

핸드 셰이크는 다음과 같습니다 ( < 클라이언트에서 서버로 전송 됨 > 서버에서 클라이언트로 전송 됨).

< PASS oauth:your_oauth_token
< NICK your_username
> :tmi.twitch.tv 001 your_username :connected to TMI
> :tmi.twitch.tv 002 your_username :your host is TMI
> :tmi.twitch.tv 003 your_username :this server is pretty new
> :tmi.twitch.tv 004 your_username tmi.twitch.tv 0.0.1 w n
> :tmi.twitch.tv 375 your_username :- tmi.twitch.tv Message of the day - 
> :tmi.twitch.tv 372 your_username :- not much to say here
> :tmi.twitch.tv 376 your_username :End of /MOTD command

일단이 MODE , 376 또는 422 중 하나를 받으면, 당신은 잘 가고 트 위치 서버에 다음과 같은 명령을 보낼 수 있습니다 :

> JOIN :#gamesdonequick
> PRIVMSG #gamesdonequick :Hello world!

클라이언트 - 서버 명령에 대한 자세한 내용은 여기를 참조하십시오 .

트 위치 관련 기능

트 위치가 표준 IRC 서비스를 사용하는 동안 IRC 서비스에 표시되는 일부 이벤트가 트 위치 (Twitch) 웹 사이트의 채널에서 활동과 관련됩니다. 여기서는 슬로우 모드가 활성화 또는 비활성화되고, 스 트리머의 채팅에서 구독자 전용 모드가 활성화 / 비활성화되고, 활동이 호스팅되고, 비트 / 치어 리더 활동이 그 예입니다.

이러한 트 위치 관련 기능에 대한 자세한 내용은 트 위치 IRC에 대한 GitHub 설명서에 나와 있으며 여기에서 확인할 수 있습니다.

파이썬

다음은 간단한 파이썬 명령 줄 프로그램으로, 트 위치 채널을 봇으로 연결하고 몇 가지 간단한 명령에 응답합니다.

종속성 :

출처 : https://gist.github.com/jessewebb/65b554b5be784dd7c8d1

import logging
import sys

from irc.bot import SingleServerIRCBot


# config
HOST = 'irc.twitch.tv'
PORT = 6667
USERNAME = 'nickname'
PASSWORD = 'oauth:twitch_token'  # http://www.twitchapps.com/tmi/
CHANNEL = '#channel'


def _get_logger():
    logger_name = 'vbot'
    logger_level = logging.DEBUG
    log_line_format = '%(asctime)s | %(name)s - %(levelname)s : %(message)s'
    log_line_date_format = '%Y-%m-%dT%H:%M:%SZ'
    logger_ = logging.getLogger(logger_name)
    logger_.setLevel(logger_level)
    logging_handler = logging.StreamHandler(stream=sys.stdout)
    logging_handler.setLevel(logger_level)
    logging_formatter = logging.Formatter(log_line_format, datefmt=log_line_date_format)
    logging_handler.setFormatter(logging_formatter)
    logger_.addHandler(logging_handler)
    return logger_

logger = _get_logger()


class VBot(SingleServerIRCBot):
    VERSION = '1.0.0'

    def __init__(self, host, port, nickname, password, channel):
        logger.debug('VBot.__init__ (VERSION = %r)', self.VERSION)
        SingleServerIRCBot.__init__(self, [(host, port, password)], nickname, nickname)
        self.channel = channel
        self.viewers = []

    def on_welcome(self, connection, event):
        logger.debug('VBot.on_welcome')
        connection.join(self.channel)
        connection.privmsg(event.target, 'Hello world!')

    def on_join(self, connection, event):
        logger.debug('VBot.on_join')
        nickname = self._parse_nickname_from_twitch_user_id(event.source)
        self.viewers.append(nickname)

        if nickname.lower() == connection.get_nickname().lower():
            connection.privmsg(event.target, 'Hello world!')

    def on_part(self, connection, event):
        logger.debug('VBot.on_part')
        nickname = self._parse_nickname_from_twitch_user_id(event.source)
        self.viewers.remove(nickname)

    def on_pubmsg(self, connection, event):
        logger.debug('VBot.on_pubmsg')
        message = event.arguments[0]
        logger.debug('message = %r', message)
        # Respond to messages starting with !
        if message.startswith("!"):
            self.do_command(event, message[1:])

    def do_command(self, event, message):
        message_parts = message.split()
        command = message_parts[0]
        
        logger.debug('VBot.do_command (command = %r)', command)

        if command == "version":
            version_message = 'Version: %s' % self.VERSION
            self.connection.privmsg(event.target, version_message)
        if command == "count_viewers":
            num_viewers = len(self.viewers)
            num_viewers_message = 'Viewer count: %d' % num_viewers
            self.connection.privmsg(event.target, num_viewers_message)
        elif command == 'exit':
            self.die(msg="")
        else:
            logger.error('Unrecognized command: %r', command)

    @staticmethod
    def _parse_nickname_from_twitch_user_id(user_id):
        # [email protected]
        return user_id.split('!', 1)[0]


def main():
    my_bot = VBot(HOST, PORT, USERNAME, PASSWORD, CHANNEL)
    my_bot.start()


if __name__ == '__main__':
    main()


Modified text is an extract of the original Stack Overflow Documentation
아래 라이선스 CC BY-SA 3.0
와 제휴하지 않음 Stack Overflow