Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

IRCShell的改进? #59

Closed
yqshao opened this issue Jan 27, 2017 · 4 comments
Closed

IRCShell的改进? #59

yqshao opened this issue Jan 27, 2017 · 4 comments

Comments

@yqshao
Copy link

yqshao commented Jan 27, 2017

首先感谢作者,这是我在使用过程中的一些想法,如果合理的话希望可以在后续采纳。


图片链接

现在的做法是向频道发送图片的本地位置,将图片链接发送到irc-server
我在使用时,觉得改成直接将图片消息替换成链接比较符合习惯,所以把发送PRIVMSG的部分改成了:

if (defined $image_api and $msg->format eq 'media' and $msg->media_size != 0){
        #过滤掉动画表情无法转换成链接的情况
        生成$link
        发送"[图片]$link"
}
else{
        发送"$line"
}

因为不熟悉perl,改的很烂,手动修改了每种发送,接收的代码,可能在收到msg的时候就直接替换会好一点。

群生成时的成员加入

现在的IRCShell在收到消息时才把成员加入群,这样不能正常在频道里查看成员,也就直接和在群中但不是好友的用户进行私信。
能否参考wechatircd的行为,在建立频道时就将成员加入?
(虽然我在实际使用时也很少需要查看成员列表和与陌生人私信,但觉得这样更合理些)

@hexsum
Copy link
Owner

hexsum commented Jan 27, 2017

图片链接的问题确实是我偷懒了,你建议的方式确实用户体验更好,我会尝试按照你的建议来完善下
不过也确实有其他用户在使用过程中关注irc上给出的是图片的本地文件路径,这样可以调用一些程序来访问本地的文件,另外考虑到上传图片采用的是第三方的图床服务,不一定100%可靠,会出现上传失败等问题,也需要考虑这种情况下要回退到本地文件路径,处理上逻辑要更复杂一些

另外,IRCShell插件github上的代码近期做了修改,image_api这个参数已经改名为upload_api了

建立频道时就将成员加入,以及irc服务器启动时就创建好友用户,这些都是可以实现的,但最开始的思路是认为这个并没有太大意义,因为现在并不能和陌生人私信,有点浪费操作,所以就没有设计成这样默认行为,而且当前内部代码有些性能问题(存在大量数组遍历等操作),短时间内大量创建irc虚拟用户对象会消耗非常长的时候,会导致irc服务器阻塞住很久,没办法响应其他客户端的正常指令

这个issues就很典型: #33

因此当初也没有选择这样做,需要先解决性能问题,再来提供一个可选的参数来控制是否默认把群成员或好友全部生成(当前好友已经提供了这样一个参数 load_friend=>0|1,)

感谢你的建议,会慢慢完善,个人精力有限,也希望你能多多贡献,

新春快乐~

@yqshao
Copy link
Author

yqshao commented Jan 30, 2017

感谢详细的回复,我fork了代码,有时间仔细学习下,希望可以帮上忙。
有关图片的处理,我觉得在选择了upload_api的情况下,还是应该返回upload的结果,失败的话回到本地路径并加上提示,而在没有设置时直接返回本地路径。细节上可能还需要考虑,但这些统一作为作为media_msg中处理比较合适,现在在IRCshell中的处理显得有些重复。
频道成员的加入可能也算是比较鸡肋的功能,看来要实现也不是简单。

@hexsum
Copy link
Owner

hexsum commented Feb 3, 2017

@yqshao
你提出的几个建议,已经实现了,代码改动比较大,也请多多帮忙测试下(需要使用github最新代码来测试)

参见 commit:
9ce6c76

1)在不设置 load_friend=>1的情况下, 使用 /query XXXX 时因为不存在该irc用户,服务端会直接返回 XXX no such nick,现在会再尝试从好友中搜索对应昵称的好友并创建irc用户,成功的话会收到类似这样的提示:

[系统提示]已从微信好友中搜索到对应昵称好友并生成irc用户,现在可以继续和好友聊天了

2)默认会上传媒体文件到图床,irc上接收到的消息形式会从

[图片](media/mojo_weixin_media_2uCq.jpg)

变成

[图片](https://ooo.0o0.ooo/2017/02/03/589432bdca8e9.jpg)

@yqshao
Copy link
Author

yqshao commented Feb 5, 2017

已经用上了新的代码,暂时没发现什么问题。
感觉这个可以close了。

@yqshao yqshao closed this as completed Feb 5, 2017
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants