标签: irc

UnicodeDecodeError: 'utf-8' 编解码器无法解码位置 1023 中的字节 0xe2:数据意外结束

基本上我已经用 Python 制作了一个 IRC Twitch 机器人,它现在除了加入频道之外什么都不做。乒乓循环可以正常工作一段时间,但随后因标题中的错误而停止。我做错了什么?提前致谢。

import re
import socket

HOST = "irc.twitch.tv"
PORT = 6667
NICK = "asdsad"
PASS = "oauth:asdasdasdasd"
channel = "#coolperson"

def send_message(sock, msg):
    sock.send("PRIVMSG #{} {}".format(channel, msg))

s = socket.socket()
s.connect((HOST, PORT))
s.send("PASS {}\r\n".format(PASS).encode("utf-8"))
s.send("NICK {}\r\n".format(NICK).encode("utf-8"))
s.send("JOIN {}\r\n".format(channel).encode("utf-8"))

while True:
    response = s.recv(1024).decode("utf-8")
    if response == "PING :tmi.twitch.tv\r\n":
        s.send("PONG :tmi.twitch.tv\r\n".encode("utf-8"))
        print("answered the call")
Run Code Online (Sandbox Code Playgroud)

python irc python-3.x twitch

3
推荐指数
2
解决办法
4147
查看次数

IRC (RFC 1459) 消息前缀

这个问题似乎相当迂腐,但是在尝试遵循 RFC 时感觉相当重要。我正在尝试编写一个 IRC 客户端,并且我正在使用 RFC 来遵循应该如何编写协议。我遇到了消息前缀部分,对所写的内容有些困惑。

每个 IRC 消息最多可以由三个主要部分组成:前缀(可选)、命令和命令参数(其中最多可能有 15 个)。前缀、命令和所有参数由一个(或多个)ASCII 空格字符 (0x20) 分隔。

前缀的存在由单个前导 ASCII 冒号字符 (':', 0x3b) 指示,该字符必须是消息本身的第一个字符。冒号和前缀之间不能有间隙(空格)。

我的问题是关于第二段的第一句;ASCII colon character (':', 0x3b). (据我所知)0x3b是分号的 ASCII 字符,这是否意味着前缀可能是分号或冒号,或者它只是文档中的一个错字?我现在继续使用冒号,但是我的好奇心一直困扰着我。

irc rfc

3
推荐指数
1
解决办法
62
查看次数

使用密码连接到irc服务器

我正在编写脚本remote.ini.脚本看起来像

on 1:start:{
    server some.irc.server
    server -m another.irc.server
}
Run Code Online (Sandbox Code Playgroud)

该脚本运行良好,因为当我打开mIRC时,它会自动连接到上面的2个服务器

现在,我想连接到需要密码的irc服务器 abcdef

如何编写脚本remote.ini以连接到此服务器?

irc mirc

2
推荐指数
1
解决办法
1万
查看次数

如何在我的IRC机器人上实施反垃圾邮件技术?

我在拥有数百名用户的公共频道中运行我的机器人.昨天有人进来,只是滥用了它.

我想让任何人使用机器人,但如果他们连续发送垃圾邮件命令,并且如果他们不是像我这样的机器人"所有者",那么我想将它们添加到一个被忽略的列表中,该列表在一小时左右到期.

我想的一种方法是在所有用户中保存所有命令,例如:

({
  'meder@freenode': [{command:'.weather 20851', timestamp: 209323023 }],
  'jack@efnet': [{command:'.seen john' }]
})
Run Code Online (Sandbox Code Playgroud)

我会设置一个cron作业来每24小时刷新一次,但我基本上会确定一个人是否在15秒的持续时间内发出了X个命令并将它们添加到忽略列表中.

实际上,当我写这个答案时,我想到了一个更好的想法..也许不是存储每个用户命令,只是将机器人的命令存储在列表中并继续推动直到它达到15的限制.

lastCommands = [], limit = 5;

function handleCommand( timeObj, action ) {
    if ( lastCommands.length < limit ) {
        action();
    } else {
        // enumerate through lastCommands and compare the timestamps of all 5 commands
        // if the user is the same for all 5 commands, and...
        // if the timestamps are all within the vicinity of 20 seconds
        // add the user …
Run Code Online (Sandbox Code Playgroud)

irc node.js

2
推荐指数
1
解决办法
3922
查看次数

将IRC频道与正则表达式匹配

如何使用正则表达式来匹配IRC频道名称?名称将包含前面的哈希符号(#).

regex irc

2
推荐指数
1
解决办法
1580
查看次数

如何运行C程序并使用Twisted Python获取程序的输出

我有一个使用Twisted框架编写的Python Bot,我有一个输出某些文本的C程序.我怎样才能运行Twisted使用命令运行C程序,收集输出,然后将输出打印回给我?

c python linux irc twisted

2
推荐指数
1
解决办法
275
查看次数

多线程新手 - 最具成本效益的多线程方式?

所以我在小型应用程序中使用多线程.在这里创建一个新线程,一个新线程.

我目前正在开发一个监控IRC聊天的程序.对于每个有效的命令,它创建一个线程,做一些工作,并将结果输出到聊天.有时,应用程序将在短时间内获得10个或更多有效命令,并创建10个或更多线程.应用程序开始变慢.我已经读过创建和关闭线程的资源效率非常低,所以我想改变我的方法.

我有一个想法是创建一些线程(大约5个左右?),这些线程总是运行一个方法,我将命令传递给它,以FIFO为基础对它们进行排队.在我实现之前,我想看看是否有更好的东西我应该使用.当然,我不想逃跑并重新发明轮子.

java irc queue multithreading

2
推荐指数
1
解决办法
127
查看次数

检查Twitch.tv流是否在线并使用Pircbot接收查看器计数

我正在使用我的IRC Bot for Twitch.tv(pircbot API),并希望在流媒体上线后,机器人自动连接到流的聊天.

我找到了一个Twitch API(这里),但我不知道如何将它实现到我的机器人中,因为我对Java很新.

如果有人可以告诉我如何在线流在线时如何检索任何提示,以及我如何检查现在观看的观众数量,那将会很酷.

问候

java irc twitch

2
推荐指数
1
解决办法
5752
查看次数

如何在Visual Studio中打开特殊的Ascii字符?

或者更具体地说.Ascii控制字符.^C,0x03STX.我试图让我的程序在IRC中发送颜色代码(我知道这没有真正的标准),但我至少需要一个小时的研究,我不知道还有什么可以搜索.我在VS 2010的选项中看不到任何内容.

链接到ascii参考.

我需要让VS停止愚蠢,让我在文本编辑器中输入STX或ETX字符.我已经在save中尝试了编码.有什么想法或想法吗?

c# irc ascii

2
推荐指数
1
解决办法
4239
查看次数

TcpClient自动处理

使用using (NetworkStream stream = client.GetStream())使套接字关闭.

c# irc tcp

2
推荐指数
1
解决办法
163
查看次数

标签 统计

irc ×10

c# ×2

java ×2

python ×2

twitch ×2

ascii ×1

c ×1

linux ×1

mirc ×1

multithreading ×1

node.js ×1

python-3.x ×1

queue ×1

regex ×1

rfc ×1

tcp ×1

twisted ×1