
Basis for a comment upvote bot
Sorry, I have been out for a while, and this one isn't bee themed as I am really digging the Borg theme at the moment. But I present to you:
A comment upvote bot
This bot was created because my simple monitor bot seemed to be the most popular article so far. Source can be found at GitHub If you have other things you would like me to attempt please, ask away!
#!/usr/bin/env python3
import os
import re
from beem import Hive
from beem.account import Account
from beem.blockchain import Blockchain
from beem.comment import Comment
from beem.instance import set_shared_blockchain_instance
from beem.utils import construct_authorperm
posting_key = os.environ["BOT"]
REGEX = '(?<=^|(?<=[^a-zA-Z0-9-_\.]))@([A-Za-z]+[A-Za-z0-9]+)'
botname = "thecrazygm"
weight = 100
hive = Hive(node=['https://api.hive.blog'], keys=posting_key)
set_shared_blockchain_instance(hive)
chain = Blockchain()
followees = Account(botname).get_following()
def summon_upvotebot():
print(f'[Starting up]')
while True:
try:
for post in chain.stream(opNames="comment", threading=True, thread_num=5):
mentions = re.findall(REGEX, post["body"])
comment = Comment(post)
perm = comment.authorperm
parent = construct_authorperm(
Comment(perm).parent_author, Comment(perm).parent_permlink)
author = post['author']
if Comment(perm).is_comment:
if botname in mentions:
print(
f'[{author} just mentioned {botname} in {perm} in reply to {parent}]')
if author in followees:
Comment(parent).upvote(
weight=weight, voter=botname)
print(
f'[{botname} voted {weight}% on {parent} per {author}\'s request]')
else:
print(
f'[{author} tried to summon {botname} but is not in the whitelist]')
except Exception as error:
print(repr(error))
continue
if __name__ == '__main__':
summon_upvotebot()
Now this takes in consideration that you have an env variable called BOT set to your posting key e.g. export BOT=mypostingkeygoeshere from the Linux/Mac cli (not even sure how this is done in Windows, someone care to share?)
This is a comment bot, looking for your bot name in a comment to upvote the parent comment and only if that person is in the bot's following list. This was done for two reasons:
- to create a simple 'whitelist'
- to show some of the other ways you can use a monitor bot for neat things
Normally we see another comment saying (this has been upvoted by blahblah, but I feel that is spam)
Until next time,
Michael Garcia a.k.a. @TheCrazyGM
p.s. I'm still feeling quite sick as why this is so brief and doesn't walk through the code with explanations.
Leave Basis for a comment upvote bot to:
Read more #dev posts
Best Posts From Michael Garcia
We have not curated any of thecrazygm's posts yet. But you can encourage our curation team to review posts by visiting them regularly and by referring other readers. Because we give priority to frequently read content.
More Posts From Michael Garcia
- Hoverfly: A Local Hive Mock for Testing Without a Testnet
- Playing Traffic Cop, Part Two: When the Cop Pulls Over Everybody
- Moon Has Moved to Finland
- A Good Week for Small Hive-Engine Fixes
- An Accidental Stress Test for Hive-Engine Data Integrity
- Fixing Data Integrity Issues in Hive-Engine Nodes
- The Final Chapter: dCity's 70,000 HIVE Claimdrop Has Been Distributed!
- Anther v0.1.0: A Modern Go SDK for Building on Hive
- Redesigning the Project Builder (GET FEATURED!)
- HiveTools Workbench: A Week of Polish, Pollen, and Splinterlands Wallets