Greetings Righteous Flaggers and Those Vicariously Defending the Steem Blockchain
I have been fairly busy as of late and doesn't look like that's changing anytime soon. Below is a report of some of the things completed or being worked on. I'm spread pretty thin in terms of projects but we're making progress, nevertheless. Here's a quck list of what I have been up to followed by more detailed descriptions:
- Discord Bot CoinGecko API integration
- Mention Bot and Admiral Migrations
- Flagger Post Frequency Limit
On to the Nitty Gritty

Discord Bot CoinGecko API integration
First, we implented the btc_price function, powered by @coingecko's web API, into @admiralbot's code. Admiralbot is our Discord Greeter and more. Credit to @lovenfreedom for the original code. Now, our Discord users can check USD and BTC relative price of Steem and other coins. As you can see, I had a little fun with it below.

Not to my surprise. 1 BTC still equals 1 BTC.
This is not a development category post but here's the code which hopefully may be helpful for others trying to add similar functionality. It depends on the urllib.request and json modules so make sure you have the in your imports. Additionally, I will be making modifications per @emrebeyler's last suggestion here to both this and the blacklist_check function.
That will be done with the next Github commit as that functionality has not been pushed to the respository as of yet.
elif command.lower().startswith('btc_price'):
try:
cg_coin = command.split(' ')[1].lower()
except IndexError:
await client.send_message(msg.channel, errorMsg)
try:
contents = urllib.request.urlopen("https://api.coingecko.com/api/v3/simple/price?ids="+cg_coin+"&vs_currencies=btc").read()
contents = json.loads(contents)
a = contents[cg_coin]['btc'] #grabbing btc price from json
btc_price = f'{a:.20f}' #reformatting as string literal
await client.send_message(msg.channel,"Current BTC price of "+cg_coin+" is "+btc_price+" BTC! Powered by CoinGeckoAPI.")
except Exception:
await client.send_message(msg.channel, str("Argh! Thar be a problem with that command. May be a barnacle in the syntax. Try a different one, matey!"))
elif command.lower().startswith('help'):
await client.send_message(msg.channel, helpInfo)
else:
command_error = await client.send_message(msg.channel, errorMsg)
await asyncio.sleep(6)
await client.delete_message(command_error)
Mention Bot and Admiral Migrations
Next, we migrated our @steemflagrewards mention webhook bot to the SFR host. The server has been graciously provided by witness @themarkymark (Steemconnect voting link). I did an oopsie though and forgot to bg the process on the mention. There was a slight amount of downtime when the ssh session timed out but we are good now.
We have a peculiar version of the Python Discord wrapper (1.0.0a1584+g1da6962) that SFR requires which is currently incompatible with Admiral. I have opted to run from my dev environment until we can address the compatibility issue. It is an Ubuntu 18 VM hosted on a Windows Server 2012 OS on a Dell Poweredge 2950. Yes, it is prehistoric hardware but gets the job done for now.
It should fairly trivial to adapt the code to the weird SFR version by changing things like bot.send_message to bot.say but I don't see a compelling reason to worry about that now as there is work with greater priority. I will re-engage as time permits.
Flagger Post Frequency Limit
With the recent addition of @reazuliqbal's flag trail(Incredibly useful tool and post could use a bit more love. Highly recommend checking it out!), we have found it very easy for us to trip the 9 distinct flagger threshold for our regular reports in a very short span of time. If you see this comment, you will see exactly what I mean. That would have generated almost 2 posts from one flagged content under the previous code.
That's a whopping 16 follow-on flags!
So, many that I could not reasonable fit them all in a screenshot!
In order to prevent frequent posting, we have put in an 8 hour limit between reports. This means we should have no more than 3 reports per day from @steemflagrewards.

My ever growing Todo list
Meme Ranks
Big item on my list is the @smartmeme meme abuse flag campaign payouts. You may see the latest update here. I wanted to use the distribution as an opportunity to promote our new meme ranks to be developed. The way it works is our brave flag warriors are bestowed their corresponding meme rank. It's essentially adding an element of gamification to abuse fighting which spices things up a bit. 🌶️
I have a couple in mind such as @bigchungus. It entails my creating 11 gifs sized to 64x64 pixels, uploading them to a host, and plugging them into a list variables. I also need to merry up a corresponding list paired to either the dollar amount or rshares range for the respective rank. It's tedious but the end result is worth it.
Interesting Factoid: Youtube listed a fake BIG CHUNGUS XBOX ONE title on Ebay which was going for over 90k USD. I must be in the wrong business! jk
Subset of a previous rank system established but for taking flags. It was fun. Well. Not the taking flags part.
Probably going to be a couple Mafia City inspired memes and should be fun putting it all together. Wanna be a Lv 35 Boss? Better get to flagging on the next campaign! I recently checked the memes tag and it looks like all the combined efforts made a helluva difference. Glad we have an anti-abuse community we can count on. 👍
SFR Mod Fund
Image courtesy of @steemseph!
In other news, we have been developing an incentive structure for our SFR moderators. Reviewing all the incoming blockchain flags takes significant amount of time. We currently spread out the labor between our 9 moderators.
Our mods spend a fair amount of time reviewing and approving flag comments. The @sfr-mod-fund account doesn't nearly have sufficient support to adequately reward the activity so if anybody would like to help, setting up your auto voters on @sfr-mod-fund's posts would be great.
Latest post is here
I have it set to pull the last 50 approvals with mods set to beneficiaries on the post relative to the number of approvals on that list. The posts make somewhere around $0.30 STU so about $0.20 STU divided for 50 flags. It's not much but it's honest work. Helps keep Steem clean so hopefully we can build more support as we go.
I recently worked out the kinks in our SQL which were formerly causing our beneficiary weights to not match the flags on the post body. With that, we are one step closer to getting it set to full auto. Fire and forget. I should be cranking out a development post soon with the many changes that have been put into effect since the dust flagger upgrade.
SFR Defense Fund
Our friend and partner @slobberchops reached out about standing up an SFR defense bot. Priority would be to counter flags on the @steemflagrewards and @sfr-mod-fund beneficiary posts. We would also want to protect any approved mention comment as they tend to be the most susceptible. More to come on that.
Staying on the grind but also taking my time
I have a ton of stuff in my work backlog. It's pretty daunting to be honest but gotta take it day by day. Not enough hours in the day and I also have a very demanding day job so it's easy for me to get a bit burned out. "Slow is smooth. Smooth is fast." or for my fans of Latin out there, "festina lente".
Our friends at the dolphin council, @imacryptorick and @kabir88, inquired about how they may support the SFR mission. After discussing our fellow admins, there seemed to be agreement about flag defense. This is important as the lot of us have been taking plenty of revenge flags from butthurt abusers. Neutralizing those flags will help make a statement of the futility of flag abuse.
The folks at the council are an awesome bunch and I look forward to joining their ranks soon as I invest and work my way to dolphin 🐬. As we all grow together, we will be able to do greater things. The sky is the limit. Thank you all for your consistent support of what we do with SFR! Hope this has been informative But also entertaining!