【问题标题】:Connecting to Twitch using my C++ irc bot使用我的 C++ irc​​ 机器人连接到 Twitch
【发布时间】:2015-02-09 10:05:43
【问题描述】:

我在将我的机器人连接到 irc.twitch.tv 时遇到了一些问题。连接到 irc.ubuntu.com 没问题。

连接到 ubuntu 时,我只发送 nick 然后发送 usr。通过 twitch,我发送 pass、nick 和 usr。
我真的很困惑为什么这根本不起作用。通常我认为 twitch 应该告诉我任何事情,但是在我的机器人告诉我没有发生特殊错误之后,根本就没有消息。所以我认为问题出在连接上,而不是因为我无法在 usr 和 nick 之前发送有效的通行证。
因为我的代码有点长所以贴在pastebin上希望大家能理解分析一下:

http://pastebin.com/Win3CXbP

PS:  - My oauth PW should be correct it is not the string in the sample code.
     - I have the pw/usr/nick in the right order, nick/usr is wrong in code.
     - I want to say again, that I don't get any message from twitch or any errors.

PPS:  - I just tried using wireshark and when filtering for "irc" I got some data 
        with irc.ubuntu.com, but none with irc.twitch.tv. 
        Is the twitch adress wrong?
PPPS: - I am not completely into wireshark yet, but the only messages I am getting 
        on tcp port 6667 are 
                            "connection establish request"       
        and                 "connection establish acknowledge"

【问题讨论】:

  • 我认为序列应该是pass, nick, user,而你的机器人似乎正在发送pass, user, nick

标签: c++ bots irc twitch


【解决方案1】:

这个问题的答案很简单。我只是通过玩弄它才发现的。 这似乎是我的小代码中的一个问题,我没有立即将我的数据发送到服务器。因此,当我将“switch 3:”更改为“switch:1”时,一切都突然开始工作了。

仍然感谢您的所有帮助!

【讨论】:

    【解决方案2】:

    Twitch 要求使用 OAuth 令牌作为密码。看这里http://help.twitch.tv/customer/portal/articles/1302780-twitch-irc

    【讨论】:

    • 但是我要发送那个,对吗?我发送的第一条消息是“PASS oauth:...”?!那我不应该从抽搐那里得到一些错误反馈吗?因为正如我所说,我没有从 irc.twitch.tv 得到任何答复。
    • 您使用的是真正的 oauth 令牌吗?或者你是真的发送'some123numbers123'
    • 我当然不会发送 some123number123 但我不会在线发布我的 oauth 令牌...
    【解决方案3】:

    根据协议文档,客户端连接协议顺序为:

    通过

    尼克

    用户

    而您的机器人似乎正在发送passusernick

    3.1 连接注册

    这里描述的命令用于注册连接 IRC 服务器作为用户以及正确断开连接。

    客户端连接不需要“PASS”命令
    已注册,但它必须在 NICK/USER 的后者之前
    组合(用于用户连接)或 SERVICE 命令(用于
    服务连接)。客户注册的推荐顺序
    如下:

                           1. Pass message
           2. Nick message                 2. Service message
           3. User message
    

    成功后,客户端将收到 RPL_WELCOME(针对用户)或 RPL_YOURESERVICE(用于服务)消息指示
    连接现在已注册并为整个 IRC 网络所知。 回复消息必须包含完整的客户端标识符,
    已注册。

    编辑:

    此外,即使协议建议PASS 是可选的,一些 服务器仍需要密码,即使连接网络不需要密码。发送一个空白的PASS 是不够的。对于那些服务器,我发送PASS none。 (只要密码不为空,什么都可以)。

    【讨论】:

    • 我最初是这样的,但因为它不起作用而改变了。所以不是这样,但仍然是 ty :/.
    • @ChrisDürr 如果您有另一个可以连接到网络的客户端,您可以随时使用 wireshark 之类的东西对连接协议进行数据包嗅探。
    • 从来没有用过这样的东西,但是明天之前没有答案的时候我可能会看看它。
    猜你喜欢
    • 2015-02-21
    • 2018-12-31
    • 1970-01-01
    • 1970-01-01
    • 2014-09-18
    • 1970-01-01
    • 1970-01-01
    • 2011-01-21
    • 2011-01-22
    相关资源
    最近更新 更多