A bot created with Python that interacts with GroupMe

Overview

GroupMe_Bot

This is a bot I'm working on a small groupme group I'm in. This is something I'll work on in my spare time. Nothing but just a fun little side project for when I'm bored.

Libraries used

Groupy: an API wrapper for Groupme

python-atomicwrites: Powerful Python library for atomic file writes

google-api-python-client (only needed if you will be doing yt searches from the bot)

Documentation for Groupy

Instructions

Before the bot can listen to a group, it needs to be added to that group. Do that first or the bot won't work.

There are two ways to run the bot.

  1. python3 start.py
  2. Docker

Make sure to change the information in main.py to what you want such as the location of your groupme key or youtube key.

You have to pick a deliminator to use this bot. The default one is $. You can change it by passing it to the bot object

Config and Credentials

The bot looks for Credentials in config.ini that is at the root of the repo. An example file has been provided.

Here you can modify some other settings such as the delimeter used, how often the bot will look for messages, and how often the bot will refresh the names and members of the group.

Groups

On first start (assuming a groups.json doesn't exist), the bot will prompt you to select what groups to listen to. It will create a groups.json where the key is the group name and the value will be a dictionary with an id and enabled keys. If enabled is set to true, it will listen to that chat. id is the group id and since it will use that to find the group, the group name can change but the bot will still be able to listen to it. If you are running this from docker, it is best to use the docker command below but with -it first instead of -ditv

JSON structure of groups.json

{
  "group1": {"enabled": true, "id": "1000123123"},
  "group2": {"enabled": false, "id": "834234235"}
}

Docker

Using the provided Dockerfile, you can build an image with docker build -t groupme-bot .

If you don't mount a volume to the container, any tags that are made will be lost once the container is stopped.

If you don't mount a volume that contains groupme.key to /app/creds, you need to pass it in as an environmental variable

Once the image is built, you can run it with:

docker run -ditv --rm -v [local tag folder]:/app/tags -v [local creds folder]:/app/creds -v [local groups.json]:/home/groupme/app/groups.json --name groupme groupme-bot

add -m [amount] or --cpus=[number] to limit the ram or CPU cores the container can use

To attach to a detached container, follow these steps (assuming you ran it with the -it arguments):

docker ps to find the Container ID

docker attach [Container ID] to attach to it

docker stop [Container ID] to stop the container

Ctrl-C to shutdown the container

Ctrl-p Ctrl-q to detach from it

Commands

Everything command should lead with the delimiter (the default delimiter is "$")

command argument(s) example
avatar [mention_name] avatar @name
git none git
yt** [query] yt skateboard tricks

** yt command will only post the first link from the youtube search

Tag System

command argument(s) example
create [tag_name] [stuff]** tag create cooltag this is a cool tag
edit [tag_name] [stuff]** tag edit cooltag this is a new edit
delete [tag_name] tag delete cooltag
none [tag_name] tag cooltag
list none tag list
owner [tag_name] tag owner cooltag
gift [tag_name] @mention tag gift cooltag @new_owner
rename [tag_name] [new tag_name] tag rename cooltag coolertag
help none tag help

** [stuff] can be a string, a link to anything, or an image that is upload through groupme

** If [stuff] is an image uploaded through groupme, then the description with the image should just be:

tag create [tag_name]

The commands create, edit, delete, gift, and rename can only be down by the owner of the tag. The owner is whoever created the tag.

owner command will get the user_id of the owner and will find attempt to match it to the nickname of the owner.

JSON structure

This is the json structure of tags

{
 "id": "group id goes here",
 "name": "group name goes here",
 "tags": {
   "tag1": {
     "content": "tag1 content",
     "owner": "owner id"
   },
   "tag2": {
     "content": "tag2 content",
     "owner": "owner id"
   }
 }
}
Owner
20 something year old guy who is into anything tech related
FAIR Enough Metrics is an API for various FAIR Metrics Tests, written in python

โ˜‘๏ธ FAIR Enough metrics for research FAIR Enough Metrics is an API for various FAIR Metrics Tests, written in python, conforming to the specifications

Maastricht University IDS 3 Jul 06, 2022
A simple terminal UI for viewing fund P/L analysis through TEFAS

Tefas UI A simple terminal UI for viewing fund P/L analysis through TEFAS. Features (that my own bank's UI lack): Daily and weekly P/L FX comparisons

Batuhan Taskaya 4 Mar 14, 2022
Automatically load stolen cookies from ChromePass

AutoCookie - Automatically loading stolen cookies from ChromePass View Demo ยท Report Bug ยท Request Feature Table of Contents About the Project Getting

darkArp 21 Oct 11, 2022
A Pluggable And Powerful Telegram Manager Bot

FRIDAY-USERBOT ๐Ÿ‡ฎ๐Ÿ‡ณ A Powerful, Smart And Simple Userbot In Pyrogram. Support ๐Ÿš‘ Inspiration & Credits Userge-X Userge Pokurt Pyrogram Code Owners Chs

DevsExpo 371 Mar 26, 2022
Group Management Bot

โค๏ธ ๐—ฆ๐—›๐—”๐——๐—œ๐—ฌ๐—ข โค๏ธ A Powerful, Smart And Advance Group Manager ... Written with AioGram , Pyrogram and Telethon... โญ๏ธ Thanks to everyone who starred

Abdisamad Omar Mohamed 4 Dec 01, 2021
A Telegram Music Tag Editor Bot that can remove almost all usernames in the music tags and add own username instead.

Music Tag Editor Bot A Telegram Music Tag Editor Bot that can remove almost all usernames in the music tags and add own username instead. It can also

14 Oct 21, 2022
Search twitter by address.

Twitter Geolocate Twitter Geolocation is a console app that generates twitter search querries for a certain geolocation and opens them in your standar

David J. Kowalk 28 Dec 06, 2022
Multi-Branch CI/CD Pipeline using CDK Pipelines.

Using AWS CDK Pipelines and AWS Lambda for multi-branch pipeline management and infrastructure deployment. This project shows how to use the AWS CDK P

AWS Samples 36 Dec 23, 2022
A Python library for the Buildkite API

PyBuildkite A Python library and client for the Buildkite API. Usage To get the package, execute: pip install pybuildkite Then set up an instance of

Peter Yasi 29 Nov 30, 2022
๐€ ๐ฆ๐จ๐๐ฎ๐ฅ๐š๐ซ ๐“๐ž๐ฅ๐ž๐ ๐ซ๐š๐ฆ ๐†๐ซ๐จ๐ฎ๐ฉ ๐ฆ๐š๐ง๐š๐ ๐ž๐ฆ๐ž๐ง๐ญ ๐›๐จ๐ญ ๐ฐ๐ข๐ญ๐ก ๐ฎ๐ฅ๐ญ๐ข๐ฆ๐š๐ญ๐ž ๐Ÿ๐ž๐š๐ญ๐ฎ๐ซ๐ž๐ฌ !!

๐‡๐จ๐ฐ ๐“๐จ ๐ƒ๐ž๐ฉ๐ฅ๐จ๐ฒ For easiest way to deploy this Bot click on the below button ๐Œ๐š๐๐ž ๐๐ฒ ๐’๐ฎ๐ฉ๐ฉ๐จ๐ซ๐ญ ๐†๐ซ๐จ๐ฎ๐ฉ ๐’๐จ๐ฎ๐ซ๐œ๐ž๐ฌ ๐†๐ž๐ง๐ž?

Mukesh Solanki 4 Oct 18, 2021
WhatsApp API Python ChatBot

WhatsApp Api Python - Esta documentaรงรฃo tem como objetivo exemplificar o uso do Moorse Whatsapp API na linguagem Python.

Douglas Alves 2 Jan 06, 2022
Sakura: an powerfull Autofilter bot that can be used in your groups

Sakura AutoFilter This Bot May Look Like Mwk_AutofilterBot And Its Because I Like Its UI, That's All Sakura is an powerfull Autofilter bot that can be

PaulWalker 12 Oct 21, 2022
Mushahid Ali 1 Dec 31, 2021
Stream Telegram files to web

Telegram File Stream Bot A Telegram bot to stream files to web Demo Bot ยป Report a Bug | Request Feature Table of Contents About this Bot Original Rep

Wrench 572 Jan 09, 2023
A smart tool to backup members ๐Ÿ“ˆ So you even after a raid/ ban you can easily restore them in seconds ๐ŸŽฒ

๐Ÿค‘ Discord-backer ๐Ÿค‘ A open-source Discord member backup and restore tool for your server. This can help you get all your members in 5 Seconds back af

John 29 Dec 21, 2022
Script que realiza a identificaรงรฃo de todos os logins e senhas dos wifis conectados em uma mรกquina e envia os dados para um e-mail especificado.

getWIFIConnection Script que realiza a identificaรงรฃo de todos os logins e senhas dos wifis conectados em uma mรกquina e envia os dados para um e-mail e

Vinรญcius Azevedo 3 Nov 27, 2022
A telegram photos or videos background remover bot

Remove BG Bot A telegram photos or videos background remover bot Variables API_HASH Your API Hash from my.telegram.org API_ID Your API ID from my.tele

ALBY 7 Dec 13, 2022
Python client library for Postmark API

Postmarker Python client library for Postmark API. Gitter: https://gitter.im/Stranger6667/postmarker Installation Postmarker can be obtained with pip:

Dmitry Dygalo 109 Dec 13, 2022
Actively maintained, pure Python wrapper for the Twitter API. Supports both normal and streaming Twitter APIs.

Twython Twython is a Python library providing an easy way to access Twitter data. Supports Python 3. It's been battle tested by companies, educational

Ryan McGrath 1.9k Jan 02, 2023
Update your World of Warcraft AddOns hosted on GitHub

AddOns Update Tool Tool to update World of Warcraft AddOns hosted on GitHub Features Pure Python: only Dulwich and Colorlog Multithreaded tasks Manual

Mr. Alchemist 16 Dec 06, 2022