MMoSP002C- steem-python 开发一个会自动问某个标签下内容的机器人
前一期已经通过 Anaconda 安装了steem-python 开发环境.
这一期做一个和社区其他人互动的机器人:对指定标签下的内容(不含留言回复)进行点赞和留言.
本次的留言是固定.实际运行中的机器人,尽量要动态内容,否则很容易被当作滥用机器人,而被踩(downvote)。
机器人的主要完成的工作:
- 扫描当前最新的上链数据;
- 获得 comment 类型的操作;
- 判断内容是否为根贴,而不是留言回复;
- upvote点赞投票1%;
- 留言回复:'欢迎使用我心爱的标签 #dappcoder, 免费送你一个热情的赞(upvote)'
直接上代码吧,有一些必要的注释,有助于大家理解.
示范一个标签点赞问候机器人(MMoSP002_hello_tag_with_vote.py):
from contextlib import suppress
from steem.blockchain import Blockchain
from steem.post import Post
import random
def run():
# upvote posts with 0.1~0.2% weight
weight = random.randrange(10, 20, 2) / 100
account = 'dappcoder'
tag = 'test'
reply = '欢迎使用我心爱的标签 #dappcoder, 免费送你一个热情的赞(upvote)'
# stream comments as they are published on the blockchain
# turn them into convenient Post objects while we're at it
bc = Blockchain()
stream = map(Post, bc.stream(filter_by=['comment']))
for post in stream:
print('post:', post)
if post.is_comment():
print('not is root post:', post)
continue
print('post.json_metadata:', post.json_metadata)
if post.json_metadata:
tags = post.json_metadata.get('tags', [])
print('tags:', tags)
# if tag in tags and len(tags) < 10:
if tag in tags:
print(account, 'do upvote:', weight)
post.upvote(weight=weight, voter=account)
print(account, 'do comment:', reply)
post.reply(reply, title="", author=account, meta=None)
if __name__ == '__main__':
with suppress(KeyboardInterrupt):
run()
执行程序:python MMoSP002_hello_tag_with_vote.py
执行结果,和预期一致:
English list:
#esteem #hive-139531 #steemdevs #community #programming
MMoSP000E-< make money on steem-python > Preface
MMoSP001E- install steem python with anaconda
中文列表
#cn #hive-180932 #chinese #hive-143316
MMoSP000C-《steem-python赚钱实战教程》序言
MMoSP001C- Anaconda 安装 steem-python 开发环境