コード例 #1
0
def addtext(bot, update):
    text = update.message.text
    var.set('blogarticle', var.get('blogarticle', '') + text + '\n')
    update.message.reply_text(
        '(%d)\n%s' %
        (len(var.get('blogarticle', '')), var.get('blogarticle', '')[-500:] +
         '...\n/preview 命令来预览发送\n/cancel 命令退出写作模式'))
    return WM
コード例 #2
0
def confirm(bot, update):
    var.set('blogarticlepos', 0)
    update.message.reply_text('(%d/%d)\n%s' % (
        1, (len(var.get('blogarticle', '')) - 1) // 500 + 1,
        var.get('blogarticle', '')[:500] +
        '...\n/yes [title] [ascii title]  确认发送\n/no 继续编辑\n/prevpage 上一页 \n/nextpage 下一页'
    ))
    return READY
コード例 #3
0
ファイル: cmd_httpcallback.py プロジェクト: zrt/bot
def httpcallback(bot, update):
    if not check_admin(update.message.from_user.id):
        return
    text = 'PORT: {}\nTOKEN: {}\nCHANNEL: {}\nMAXLEN: {}\n'.format(
        var.get('httpcallback_port',None),
        var.get('httpcallback_token',None),
        var.get('httpcallback_channel',None),
        var.get('httpcallback_maxlen',None))
    bot.send_message(chat_id=update.message.chat_id, text=text)
コード例 #4
0
def callback_rss(bot, job):
    unreadnum = var.get('rssunreadnum', 0)
    lastid = var.get('rsslatestid', 0)
    if unreadnum >= const.MINIFLUX_MAXUNREAD:
        return
    entries = miniflux_client.get_entries(lastid)
    for x in entries:
        send_entry(bot, x)
        lastid = max(lastid, x['id'])
    var.set('rsslatestid', lastid)
    var.set('rssunreadnum', unreadnum + len(entries))
コード例 #5
0
def confirm_yes(bot, update, args):
    if len(args) != 2:
        update.message.reply_text('usage: /yes [title] [ascii title]')
        return READY
    article = var.get('blogarticle', '')
    article += '\n\n> via [msbot](https://github.com/zrt/bot)\n'
    thread = articlemanager.create(args[0], args[1], article,
                                   var.get('blogarticleimg', []))
    var.set('blogarticlethread', thread)
    update.message.reply_text('发送中...\n/check 检查发送进度\n/cancel 退出写作模式')
    return SENT
コード例 #6
0
def nextpage(bot, update):
    pos = var.get('blogarticlepos', 0)
    if pos >= (len(var.get('blogarticle', '')) - 1) // 500:
        update.message.reply_text('没有下一页qwq')
    else:
        pos = pos + 1
        var.set('blogarticlepos', pos)
        update.message.reply_text('(%d/%d)\n%s' % (
            pos + 1, (len(var.get('blogarticle', '')) - 1) // 500 + 1,
            var.get('blogarticle', '')[pos * 500:(pos + 1) * 500] +
            '...\n/yes [title] [ascii title] 确认发送\n/no 继续编辑\n/prevpage 上一页 \n/nextpage 下一页\n/cancel 命令退出写作模式'
        ))
    return READY
コード例 #7
0
def addimg(bot, update):
    file_id = update.message.photo[-1]
    newFile = bot.get_file(file_id)
    file_name = 'blog_img_%s.png' % randstr()
    newFile.download(file_name)
    var.get('blogarticleimg', []).append(file_name)
    var.set('blogarticle',
            var.get('blogarticle', '') + '![photo](/img/%s)\n' % file_name)
    update.message.reply_text(
        '(%d)\n%s' %
        (len(var.get('blogarticle', '')), var.get('blogarticle', '')[-500:] +
         '...\n/preview 命令来预览发送\n/cancel 命令退出写作模式'))
    return WM
コード例 #8
0
def cancel(bot, update):
    update.message.reply_text('canceled', reply_markup=ReplyKeyboardRemove())
    # 清空下载的图片
    for x in var.get('blogarticleimg'):
        if x.startswith('blog_img_'):
            os.sytem('rm %s' % x)
    return ConversationHandler.END
コード例 #9
0
def check(bot, update):
    thread = var.get('blogarticlethread', None)
    if thread == None or thread.isAlive() == False:
        var.set('blogarticlethread', None)
        update.message.reply_text('发送完成\n/wm 开启新的一篇文章')
        return ConversationHandler.END
    else:
        update.message.reply_text('发送中...\n/check 检查发送进度\n/cancel 退出写作模式')
        return SENT
コード例 #10
0
ファイル: cmd_rss.py プロジェクト: zrt/bot
def rss(bot, update):
    if not check_admin(update.message.from_user.id):
        return
    # show info and help
    text = '''Miniflux url: {}
user: {}
feeds num: {}
bind channel: {}
lastest entry id: {}
unread num: {}
max unread num: {}
---
/rssadd add a new rss feed
/rsssetlatestentryid <id> set latest entry id
'''.format(const.MINIFLUX_URL, const.MINIFLUX_USER,
           miniflux_client.get_feeds_num(), const.MINIFLUX_CHANNEL_ID,
           var.get('rsslatestid', None), var.get('rssunreadnum', None),
           const.MINIFLUX_MAXUNREAD)
    update.message.reply_text(text)
コード例 #11
0
ファイル: cmd_httpcallback.py プロジェクト: zrt/bot
def check_admin(check_id):
    admin_list = var.get('admin_list', [])
    if check_id in admin_list:
        return True
    return False
コード例 #12
0
# 总未读数量限制 0 or 20

import const, var
import miniflux_client
import telegram
from telegram import InlineKeyboardButton, InlineKeyboardMarkup
import re
# MINIFLUX_MAXUNREAD
var.get('rssunreadnum', 0)
htmltag = re.compile(r'</?\w+[^>]*>')


def escapehtml(s):
    return htmltag.sub('', s)


def get_info(entry):
    ret = ''
    ret += "%s\n" % entry['title']
    ret += '%s\n' % entry['author']
    ret += entry['url'] + '\n'
    ret += '%s, .%d\n' % (entry['published_at'], entry['id'])
    s = escapehtml(entry['content'])
    s = s.replace('\r\n', '\n')
    while '\n\n' in s:
        s = s.replace('\n\n', '\n')
    if len(s) < 500:
        ret += s
    else:
        ret += s[:500] + '...'
    return ret
コード例 #13
0
from telegram.ext import (CommandHandler, ConversationHandler, RegexHandler,
                          MessageHandler, Filters)


def check_admin(check_id):
    admin_list = var.get('admin_list', [])
    if check_id in admin_list:
        return True
    return False


def rsssetlatestentryid(bot, update, args):
    if not check_admin(update.message.from_user.id):
        return
    # show info and help
    result = ''
    entryid = -1
    try:
        entryid = int(args[0])
        var.set('rsslatestid', entryid)
        result = 'ok ' + str(entryid)
    except Exception as e:
        result = 'error ' + str(e)
    update.message.reply_text(result)


var.get('rsslatestid', miniflux_client.get_latest_entry_id())
_handler = CommandHandler('rsssetlatestentryid',
                          rsssetlatestentryid,
                          pass_args=True)
コード例 #14
0
def confirm_no(bot, update):
    update.message.reply_text(
        '(%d)\n%s' %
        (len(var.get('blogarticle', '')), var.get('blogarticle', '')[-500:] +
         '...\n/preview 命令来预览发送\n/cancel 命令退出写作模式'))
    return WM
コード例 #15
0
def callback_query(bot, update):
    if not check_admin(update.callback_query.from_user.id):
        return
    callback_data = update.callback_query.data
    origin_message_id = update.callback_query.message.message_id
    text = update.callback_query.message.text
    chat_id = update.callback_query.message.chat_id
    args = callback_data.split(',')
    entryid = int(args[1])
    isread = int(args[2])
    isstar = int(args[3])
    motd_keyboard = None
    callbackanswer = ''
    if args[0] == 'rssmarkread':
        motd_keyboard = [[
            InlineKeyboardButton('📦  ✅',
                                 callback_data="rssmarkunread,%d,%d,%d" %
                                 (entryid, 1, isstar)),
            InlineKeyboardButton(
                '✨' + ['', ' ✅'][isstar],
                callback_data="%s,%d,%d,%d" %
                (("rssmarkstar", "rssmarkunstar")[isstar], entryid, 1, isstar))
        ]]
        callbackanswer = '已标记为已读'
    elif args[0] == 'rssmarkstar':
        motd_keyboard = [[
            InlineKeyboardButton(
                '📦 ✅',
                callback_data="%s,%d,%d,%d" %
                (("rssmarkread", "rssmarkunread")[1], entryid, isread, 1)),
            InlineKeyboardButton('✨ ✅',
                                 callback_data="rssmarkunstar,%d,%d,%d" %
                                 (entryid, isread, 1))
        ]]
        callbackanswer = '已星标'
    elif args[0] == 'rssmarkunread':
        motd_keyboard = [[
            InlineKeyboardButton('📦',
                                 callback_data="rssmarkread,%d,%d,%d" %
                                 (entryid, 0, isstar)),
            InlineKeyboardButton(
                '✨' + ['', ' ✅'][isstar],
                callback_data="%s,%d,%d,%d" %
                (("rssmarkstar", "rssmarkunstar")[isstar], entryid, 0, isstar))
        ]]
        callbackanswer = '已标记为未读'
    elif args[0] == 'rssmarkunstar':
        motd_keyboard = [[
            InlineKeyboardButton('📦' + ['', ' ✅'][isread],
                                 callback_data="%s,%d,%d,%d" %
                                 (("rssmarkread", "rssmarkunread")[isread],
                                  entryid, isread, 0)),
            InlineKeyboardButton('✨',
                                 callback_data="rssmarkstar,%d,%d,%d" %
                                 (entryid, isread, 0))
        ]]
        callbackanswer = '已去掉星标'
    else:
        return
    motd_markup = InlineKeyboardMarkup(motd_keyboard)
    bot.edit_message_text(chat_id=chat_id,
                          message_id=origin_message_id,
                          text=text,
                          reply_markup=motd_markup)
    bot.answer_callback_query(callback_query_id=update.callback_query.id,
                              text=callbackanswer)
    if args[0] == 'rssmarkread':
        var.set('rssunreadnum', var.get('rssunreadnum', 1) - 1)
        miniflux_client.markread(entryid)
    elif args[0] == 'rssmarkstar':
        miniflux_client.markread(entryid)
        miniflux_client.markstar(entryid)
    elif args[0] == 'rssmarkunread':
        miniflux_client.markunread(entryid)
    elif args[0] == 'rssmarkunstar':
        miniflux_client.markunstar(entryid)
    else:
        return