From 1d9f634973d573d991c974227c7e5f6a2cd25df0 Mon Sep 17 00:00:00 2001 From: Cristina Cochior Date: Wed, 13 Jan 2021 14:39:20 +0100 Subject: [PATCH 1/9] adding some other lost bots to the bigger group --- gather.py | 158 +++++++++++++++++++++++++++++++++++++++++++++++++++++ greet.py | 98 +++++++++++++++++++++++++++++++++ spark.py | 114 ++++++++++++++++++++++++++++++++++++++ transit.py | 108 ++++++++++++++++++++++++++++++++++++ whisper.py | 102 ++++++++++++++++++++++++++++++++++ 5 files changed, 580 insertions(+) create mode 100644 gather.py create mode 100644 greet.py create mode 100644 spark.py create mode 100644 transit.py create mode 100644 whisper.py diff --git a/gather.py b/gather.py new file mode 100644 index 0000000..7d360c3 --- /dev/null +++ b/gather.py @@ -0,0 +1,158 @@ +#!/usr/bin/env python3 +# -*- coding: utf-8 -*- + +""" + This bot will add words and expressions to a file. + You can use this code in the chat by calling three different options in the chat: + "@glossary-add word": adds the word "word" in the list + "@glossary-drift": returns a term from the list that was selected by chance + "@glossary-all": returns a list of all the saved expressions. + + To run this bot, type the following command in your terminal: + python3 gather.py -d -j gatherbot@conversejs.org -r botsofconduct@muc.vvvvvvaria.org -n gatherbot -p testing -o . +""" + +import logging +from getpass import getpass +from argparse import ArgumentParser +import slixmpp +import ssl, os, requests, urllib + +class MUCBot(slixmpp.ClientXMPP): + + def __init__(self, jid, password, room, nick, output): + slixmpp.ClientXMPP.__init__(self, jid, password) + self.room = room + self.nick = nick + self.output = output + self.add_event_handler("session_start", self.start) + self.add_event_handler("groupchat_message", self.muc_message) + + + def start(self, event): + self.get_roster() + self.send_presence() + + # https://xmpp.org/extensions/xep-0045.html + self.plugin['xep_0045'].join_muc(self.room, self.nick, + # If a room password is needed, use: + # password=the_room_password, + wait=True) + + def muc_message(self, msg): + if msg['mucnick'] != self.nick: + + # Check if output folder exists + if not os.path.exists(self.output): + os.mkdir(self.output) + + # adds words to a glossary file: + if '@glossary-add' in msg['body']: + + # reply from the bot + self.send_message(mto=self.room, mbody="new word(s) added; language is in motion".format(msg['mucnick']), mtype='groupchat') + + # Add message to log + message = '{}'.format(msg['body'].replace('@glossary-add','')) + log = 'glossary.txt' + log_path = os.path.join(self.output, log) + f = open(log_path, 'a+') + f.write(message+'\n') + f.close() + + + # retrieves all terms from the growing glossary file: + if '@glossary-all' in msg['body']: + + file = open('glossary.txt', 'r') + filelist=[] + for line in file: + print(line) + filelist.append(line) + print(filelist) + + self.send_message(mto=self.room, mbody= filelist, mtype='groupchat') + + # retrieves a random term from the growing glossary file: + if '@glossary-drift' in msg['body']: + + import random + file = open('glossary.txt', 'r') + filelist=[] + for line in file: + print(line) + filelist.append(line) + print(filelist) + + self.send_message(mto=self.room, mbody= random.choice(filelist), mtype='groupchat') + + +if __name__ == '__main__': + # Setup the command line arguments. + parser = ArgumentParser() + + # output verbosity options. + parser.add_argument("-q", "--quiet", help="set logging to ERROR", + action="store_const", dest="loglevel", + const=logging.ERROR, default=logging.INFO) + parser.add_argument("-d", "--debug", help="set logging to DEBUG", + action="store_const", dest="loglevel", + const=logging.DEBUG, default=logging.INFO) + + # JID and password options. + parser.add_argument("-j", "--jid", dest="jid", + help="JID to use") + parser.add_argument("-p", "--password", dest="password", + help="password to use") + parser.add_argument("-r", "--room", dest="room", + help="MUC room to join") + parser.add_argument("-n", "--nick", dest="nick", + help="MUC nickname") + + # output folder for images + parser.add_argument("-o", "--output", dest="output", + help="output folder, this is where the files are stored", + type=str) + + args = parser.parse_args() + + # Setup logging. + logging.basicConfig(level=args.loglevel, + format='%(levelname)-8s %(message)s') + + if args.jid is None: + args.jid = input("XMPP address: ") + if args.password is None: + args.password = getpass("Password: ") + if args.room is None: + args.room = input("MUC room: ") + if args.nick is None: + args.nick = input("MUC nickname: ") + if args.output is None: + args.output = input("Output folder: ") + + # Setup the MUCBot and register plugins. Note that while plugins may + # have interdependencies, the order in which you register them does + # not matter. + xmpp = MUCBot(args.jid, args.password, args.room, args.nick, args.output) + xmpp.register_plugin('xep_0030') # Service Discovery + xmpp.register_plugin('xep_0045') # Multi-User Chat + xmpp.register_plugin('xep_0199') # XMPP Ping + xmpp.register_plugin('xep_0066') # Process URI's (files, images) + + # Connect to the XMPP server and start processing XMPP stanzas. + xmpp.connect() + xmpp.process() + + +""" + Slixmpp: The Slick XMPP Library + Copyright (C) 2010 Nathanael C. Fritz + This file is part of Slixmpp. + + See the file LICENSE for copying permission. + https://lab.louiz.org/poezio/slixmpp/blob/master/LICENSE + + The code has been modified for the Collective Conditions work session in Brussels, 2019, by Varia. + http://constantvzw.org/site/-Collective-Conditions,220-.html +""" diff --git a/greet.py b/greet.py new file mode 100644 index 0000000..420f62b --- /dev/null +++ b/greet.py @@ -0,0 +1,98 @@ +#!/usr/bin/env python3 +# -*- coding: utf-8 -*- + +""" + This bot greets every time it enters a room. + On line 33 you can change the code after "mbody=" to add your own greeting: + self.send_message(mto=self.room, mbody='collective conditions', mtype='groupchat') + + To run this bot, type the following command in your terminal: + python3 greet.py -d -j greetbot@conversejs.org -r botsofconduct@muc.vvvvvvaria.org -n greetbot -p testing +""" + +import logging +from getpass import getpass +from argparse import ArgumentParser +import slixmpp +import ssl, os, requests, urllib + +class MUCBot(slixmpp.ClientXMPP): + + def __init__(self, jid, password, room, nick): + slixmpp.ClientXMPP.__init__(self, jid, password) + self.room = room + self.nick = nick + self.add_event_handler("session_start", self.start) + + def start(self, event): + self.get_roster() + self.send_presence() + self.plugin['xep_0045'].join_muc(self.room, self.nick, wait=True) + + """You can add your message in mbody:""" + self.send_message(mto=self.room, mbody='nice to be here', mtype='groupchat') + +if __name__ == '__main__': + # Setup the command line arguments. + parser = ArgumentParser() + + # output verbosity options. + parser.add_argument("-q", "--quiet", help="set logging to ERROR", + action="store_const", dest="loglevel", + const=logging.ERROR, default=logging.INFO) + parser.add_argument("-d", "--debug", help="set logging to DEBUG", + action="store_const", dest="loglevel", + const=logging.DEBUG, default=logging.INFO) + + # JID and password options. + parser.add_argument("-j", "--jid", dest="jid", + help="JID to use") + parser.add_argument("-p", "--password", dest="password", + help="password to use") + parser.add_argument("-r", "--room", dest="room", + help="MUC room to join") + parser.add_argument("-n", "--nick", dest="nick", + help="MUC nickname") + + + args = parser.parse_args() + + # Setup logging. + logging.basicConfig(level=args.loglevel, + format='%(levelname)-8s %(message)s') + + if args.jid is None: + args.jid = input("XMPP address: ") + if args.password is None: + args.password = getpass("Password: ") + if args.room is None: + args.room = input("MUC room: ") + if args.nick is None: + args.nick = input("MUC nickname: ") + + + # Setup the MUCBot and register plugins. Note that while plugins may + # have interdependencies, the order in which you register them does + # not matter. + xmpp = MUCBot(args.jid, args.password, args.room, args.nick) + xmpp.register_plugin('xep_0030') # Service Discovery + xmpp.register_plugin('xep_0045') # Multi-User Chat + xmpp.register_plugin('xep_0199') # XMPP Ping + xmpp.register_plugin('xep_0066') # Process URI's (files, images) + + # Connect to the XMPP server and start processing XMPP stanzas. + xmpp.connect() + xmpp.process() + + +""" + Slixmpp: The Slick XMPP Library + Copyright (C) 2010 Nathanael C. Fritz + This file is part of Slixmpp. + + See the file LICENSE for copying permission. + https://lab.louiz.org/poezio/slixmpp/blob/master/LICENSE + + The code has been modified for the Collective Conditions work session in Brussels, 2019, by Varia. + http://constantvzw.org/site/-Collective-Conditions,220-.html +""" diff --git a/spark.py b/spark.py new file mode 100644 index 0000000..97aa55b --- /dev/null +++ b/spark.py @@ -0,0 +1,114 @@ +#!/usr/bin/env python3 +# -*- coding: utf-8 -*- + +""" + This bot replies to a specific word. + On line 42, you can edit the word-to-be-responded-to after "if '": + if 'target-word' in msg['body']: + On line 44, you can edit the response options after "wordslist = ['": + wordslist = ['a response to the target-word.'] + + To run this bot, type the following command in your terminal: + python3 spark.py -d -j sparkbot@conversejs.org -r botsofconduct@muc.vvvvvvaria.org -n sparkbot -p testing +""" + +import logging +from getpass import getpass +from argparse import ArgumentParser +import slixmpp +import random +import ssl, os, requests, urllib + +class MUCBot(slixmpp.ClientXMPP): + def __init__(self, jid, password, room, nick): + slixmpp.ClientXMPP.__init__(self, jid, password) + + self.room = room + self.nick = nick + self.add_event_handler("session_start", self.start) + self.add_event_handler("groupchat_message", self.muc_message) + + + def start(self, event): + self.get_roster() + self.send_presence() + + # https://xmpp.org/extensions/xep-0045.html + self.plugin['xep_0045'].join_muc(self.room, self.nick, wait=True) + + def muc_message(self, msg): + if msg['mucnick'] != self.nick: + # Everytime someone types this word or expression, the bot replies. You can edit it here: + if 'connectivity' in msg['body']: + # The list of responses one line below can be expanded with the following format: ['text','text','text'] + wordslist = ['What does this word even mean?'] + # The bot will respond with one of the options at random: + self.send_message(mto=self.room,mbody= random.choice(wordslist), mtype='groupchat') + + +if __name__ == '__main__': + # Setup the command line arguments. + parser = ArgumentParser() + + # output verbosity options. + parser.add_argument("-q", "--quiet", help="set logging to ERROR", + action="store_const", dest="loglevel", + const=logging.ERROR, default=logging.INFO) + parser.add_argument("-d", "--debug", help="set logging to DEBUG", + action="store_const", dest="loglevel", + const=logging.DEBUG, default=logging.INFO) + + # JID and password options. + parser.add_argument("-j", "--jid", dest="jid", + help="JID to use") + parser.add_argument("-p", "--password", dest="password", + help="password to use") + parser.add_argument("-r", "--room", dest="room", + help="MUC room to join") + parser.add_argument("-n", "--nick", dest="nick", + help="MUC nickname") + + # output folder for images + parser.add_argument("-o", "--output", dest="output", + help="output folder, this is where the files are stored", + type=str) + + args = parser.parse_args() + + # Setup logging. + logging.basicConfig(level=args.loglevel, + format='%(levelname)-8s %(message)s') + + if args.jid is None: + args.jid = input("XMPP address: ") + if args.password is None: + args.password = getpass("Password: ") + if args.room is None: + args.room = input("MUC room: ") + if args.nick is None: + args.nick = input("MUC nickname: ") + + # Setup the MUCBot and register plugins. Note that while plugins may + # have interdependencies, the order in which you register them does + # not matter. + xmpp = MUCBot(args.jid, args.password, args.room, args.nick) + xmpp.register_plugin('xep_0030') # Service Discovery + xmpp.register_plugin('xep_0045') # Multi-User Chat + xmpp.register_plugin('xep_0199') # XMPP Ping + xmpp.register_plugin('xep_0066') # Process URI's (files, images) + + # Connect to the XMPP server and start processing XMPP stanzas. + xmpp.connect() + xmpp.process() + +""" + Slixmpp: The Slick XMPP Library + Copyright (C) 2010 Nathanael C. Fritz + This file is part of Slixmpp. + + See the file LICENSE for copying permission. + https://lab.louiz.org/poezio/slixmpp/blob/master/LICENSE + + The code has been modified for the Collective Conditions work session in Brussels, 2019, by Varia. + http://constantvzw.org/site/-Collective-Conditions,220-.html +""" diff --git a/transit.py b/transit.py new file mode 100644 index 0000000..a7ee1f9 --- /dev/null +++ b/transit.py @@ -0,0 +1,108 @@ +import asyncio +import logging +import slixmpp +from getpass import getpass +from argparse import ArgumentParser +from slixmpp import ClientXMPP + +""" + This bot announces when someone enters or leaves the space. + On line 39, you can edit the message when someone enters by editing what goes after 'mbody="': + mbody="%s has just entered..." % (presence['muc']['nick']), + On line 45, you can edit the message when someone leaves by editing what goes after 'mbody="': + mbody="%s has just left..." % (presence['muc']['nick']), + + To run this bot, type the following command in your terminal: + python3 transit.py -d -j transitbot@conversejs.org -r botsofconduct@muc.vvvvvvaria.org -n transitbot -p testing +""" + +class MUCBot(slixmpp.ClientXMPP): + + def __init__(self, jid, password, room, nick): + slixmpp.ClientXMPP.__init__(self, jid, password) + self.room = room + self.nick = nick + self.add_event_handler("session_start", self.start) + self.add_event_handler("muc::%s::got_online" % self.room, self.muc_online) + self.add_event_handler("muc::%s::got_offline" % self.room, self.muc_offline) + + def start(self, event): + self.get_roster() + self.send_presence() + self.plugin['xep_0045'].join_muc(self.room, + self.nick, + wait=True) + + def muc_online(self, presence): + if presence['muc']['nick'] != self.nick: + self.send_message(mto=presence['from'].bare, + mbody="%s has just entered..." % (presence['muc']['nick']), + mtype='groupchat') + + def muc_offline(self, presence): + if presence['muc']['nick'] != self.nick: + self.send_message(mto=presence['from'].bare, + mbody="%s has just left..." % (presence['muc']['nick']), + mtype='groupchat') + +if __name__ == '__main__': + # Setup the command line arguments. + parser = ArgumentParser() + + # Output verbosity options. + parser.add_argument("-q", "--quiet", help="set logging to ERROR", + action="store_const", dest="loglevel", + const=logging.ERROR, default=logging.INFO) + parser.add_argument("-d", "--debug", help="set logging to DEBUG", + action="store_const", dest="loglevel", + const=logging.DEBUG, default=logging.INFO) + + # JID and password options. + parser.add_argument("-j", "--jid", dest="jid", + help="JID to use") + parser.add_argument("-p", "--password", dest="password", + help="password to use") + parser.add_argument("-r", "--room", dest="room", + help="MUC room to join") + parser.add_argument("-n", "--nick", dest="nick", + help="MUC nickname") + + args = parser.parse_args() + + # Setup logging. + logging.basicConfig(level=args.loglevel, + format='%(levelname)-8s %(message)s') + + if args.jid is None: + args.jid = input("Username: ") + if args.password is None: + args.password = getpass("Password: ") + if args.room is None: + args.room = input("MUC room: ") + if args.nick is None: + args.nick = input("MUC nickname: ") + + # Setup the MUCBot and register plugins. Note that while plugins may + # have interdependencies, the order in which you register them does + # not matter. + xmpp = MUCBot(args.jid, args.password, args.room, args.nick) + xmpp.register_plugin('xep_0030') # Service Discovery + xmpp.register_plugin('xep_0045') # Multi-User Chat + xmpp.register_plugin('xep_0199') # XMPP Ping + + # Connect to the XMPP server and start processing XMPP stanzas. + xmpp.connect() + xmpp.process() + + +""" + Slixmpp: The Slick XMPP Library + Copyright (C) 2010 Nathanael C. Fritz + This file is part of Slixmpp. + + See the file LICENSE for copying permission. + https://lab.louiz.org/poezio/slixmpp/blob/master/LICENSE + + The code has been modified at various times, by various people. This version was edited for the Collective Conditions work session in Brussels, 2019, by Varia. + http://constantvzw.org/site/-Collective-Conditions,220-.html +""" diff --git a/whisper.py b/whisper.py new file mode 100644 index 0000000..d304fcd --- /dev/null +++ b/whisper.py @@ -0,0 +1,102 @@ +#!/usr/bin/env python3 +# -*- coding: utf-8 -*- + +""" + This bot forwards messages it receives in private to the group channel it is part of. + On line 37 you can change the code after 'msg.reply("' to add your own message that will be sent to the person speaking to the bot: + msg.reply("Thank you for telling me this. I will pass it on to the chatroom." % msg).send() + On line 38 you can change the code after 'mbody="' to add your own message that will be sent to the group the bot is part of: + self.send_message(mto=self.room, mbody="This has been whispered to me:\n%(body)s" % msg, mtype='groupchat') + + To run this bot, type the following command in your terminal: + python3 whisper.py -j whisperbot@conversejs.org -r botsofconduct@muc.vvvvvvaria.org -n whisperbot -p testing +""" + +import logging +from getpass import getpass +from argparse import ArgumentParser +import slixmpp + + +class EchoBot(slixmpp.ClientXMPP): + + def __init__(self, jid, password, room, nick): + slixmpp.ClientXMPP.__init__(self, jid, password) + self.room = room + self.nick = nick + self.add_event_handler("session_start", self.start) + self.add_event_handler("message", self.message) + + def start(self, event): + self.send_presence() + self.get_roster() + self.plugin['xep_0045'].join_muc(self.room, self.nick, wait=True) + + def message(self, msg): + if msg['type'] in ('chat', 'normal'): + msg.reply("Thank you for telling me this. I will pass it on to the chatroom." % msg).send() + self.send_message(mto=self.room, mbody="This has been whispered to me:\n%(body)s" % msg, mtype='groupchat') + + +if __name__ == '__main__': + # Setup the command line arguments. + parser = ArgumentParser(description=EchoBot.__doc__) + + # Output verbosity options. + parser.add_argument("-q", "--quiet", help="set logging to ERROR", + action="store_const", dest="loglevel", + const=logging.ERROR, default=logging.INFO) + parser.add_argument("-d", "--debug", help="set logging to DEBUG", + action="store_const", dest="loglevel", + const=logging.DEBUG, default=logging.INFO) + + # JID and password options. + parser.add_argument("-j", "--jid", dest="jid", + help="JID to use") + parser.add_argument("-p", "--password", dest="password", + help="password to use") + parser.add_argument("-r", "--room", dest="room", + help="MUC room to join") + parser.add_argument("-n", "--nick", dest="nick", + help="MUC nickname") + args = parser.parse_args() + + # Setup logging. + logging.basicConfig(level=args.loglevel, + format='%(levelname)-8s %(message)s') + + if args.jid is None: + args.jid = input("Username: ") + if args.password is None: + args.password = getpass("Password: ") + if args.room is None: + args.room = input("MUC room: ") + if args.nick is None: + args.nick = input("MUC nickname: ") + + # Setup the EchoBot and register plugins. Note that while plugins may + # have interdependencies, the order in which you register them does + # not matter. + xmpp = EchoBot(args.jid, args.password, args.room, args.nick) + xmpp.register_plugin('xep_0030') # Service Discovery + xmpp.register_plugin('xep_0004') # Data Forms + xmpp.register_plugin('xep_0060') # PubSub + xmpp.register_plugin('xep_0199') # XMPP Ping + xmpp.register_plugin('xep_0066') # Process URI's (files, images) + xmpp.register_plugin('xep_0045') # Multi-User Chat + + # Connect to the XMPP server and start processing XMPP stanzas. + xmpp.connect() + xmpp.process() + +""" + Slixmpp: The Slick XMPP Library + Copyright (C) 2010 Nathanael C. Fritz + This file is part of Slixmpp. + + See the file LICENSE for copying permission. + https://lab.louiz.org/poezio/slixmpp/blob/master/LICENSE + + The code has been modified for the Collective Conditions work session in Brussels, 2019, by Varia. + http://constantvzw.org/site/-Collective-Conditions,220-.html +""" From 232f7110efd1907721442b141893b44a748964b3 Mon Sep 17 00:00:00 2001 From: Cristina Cochior Date: Wed, 13 Jan 2021 14:42:03 +0100 Subject: [PATCH 2/9] put all bots in specific folders --- gather.py => GlossBot/gather.py | 0 greet.py => GreetBot/greet.py | 0 spark.py => SparkBot/spark.py | 0 transit.py => TransitBot/transit.py | 0 whisper.py => WhisperBot/whisper.py | 0 5 files changed, 0 insertions(+), 0 deletions(-) rename gather.py => GlossBot/gather.py (100%) rename greet.py => GreetBot/greet.py (100%) rename spark.py => SparkBot/spark.py (100%) rename transit.py => TransitBot/transit.py (100%) rename whisper.py => WhisperBot/whisper.py (100%) diff --git a/gather.py b/GlossBot/gather.py similarity index 100% rename from gather.py rename to GlossBot/gather.py diff --git a/greet.py b/GreetBot/greet.py similarity index 100% rename from greet.py rename to GreetBot/greet.py diff --git a/spark.py b/SparkBot/spark.py similarity index 100% rename from spark.py rename to SparkBot/spark.py diff --git a/transit.py b/TransitBot/transit.py similarity index 100% rename from transit.py rename to TransitBot/transit.py diff --git a/whisper.py b/WhisperBot/whisper.py similarity index 100% rename from whisper.py rename to WhisperBot/whisper.py From 08e42a21da23c38547afa47a9376baf0003716ed Mon Sep 17 00:00:00 2001 From: ccl Date: Wed, 13 Jan 2021 14:43:39 +0100 Subject: [PATCH 3/9] Add 'WhisperBot/README.md' --- WhisperBot/README.md | 1 + 1 file changed, 1 insertion(+) create mode 100644 WhisperBot/README.md diff --git a/WhisperBot/README.md b/WhisperBot/README.md new file mode 100644 index 0000000..952f6c7 --- /dev/null +++ b/WhisperBot/README.md @@ -0,0 +1 @@ +This is a bot that takes a message sent in a private conversation and repeats it to a group. From c4f075d6420d0ea6ddc12bc815e522e89ce566f1 Mon Sep 17 00:00:00 2001 From: ccl Date: Wed, 13 Jan 2021 14:45:33 +0100 Subject: [PATCH 4/9] added description for whisperbot --- WhisperBot/README.md | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/WhisperBot/README.md b/WhisperBot/README.md index 952f6c7..daebe3c 100644 --- a/WhisperBot/README.md +++ b/WhisperBot/README.md @@ -1 +1,9 @@ -This is a bot that takes a message sent in a private conversation and repeats it to a group. +This bot forwards messages it receives in private to the group channel it is part of. +On line 37 you can change the code after 'msg.reply("' to add your own message that will be sent to the person speaking to the bot: + msg.reply("Thank you for telling me this. I will pass it on to the chatroom." % msg).send() + +On line 38 you can change the code after 'mbody="' to add your own message that will be sent to the group the bot is part of: + self.send_message(mto=self.room, mbody="This has been whispered to me:\n%(body)s" % msg, mtype='groupchat') + +To run this bot, type the following command in your terminal: + python3 whisper.py -j whisperbot@conversejs.org -r muc_name@muc.vvvvvvaria.org -n whisperbot -p testing \ No newline at end of file From 06c89b2b97c636d0a1654df1d3ac5c0e86b41730 Mon Sep 17 00:00:00 2001 From: ccl Date: Wed, 13 Jan 2021 14:46:34 +0100 Subject: [PATCH 5/9] updated whisperbot description --- WhisperBot/README.md | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/WhisperBot/README.md b/WhisperBot/README.md index daebe3c..caf9a78 100644 --- a/WhisperBot/README.md +++ b/WhisperBot/README.md @@ -1,9 +1,14 @@ +# WhisperBot + This bot forwards messages it receives in private to the group channel it is part of. On line 37 you can change the code after 'msg.reply("' to add your own message that will be sent to the person speaking to the bot: + msg.reply("Thank you for telling me this. I will pass it on to the chatroom." % msg).send() On line 38 you can change the code after 'mbody="' to add your own message that will be sent to the group the bot is part of: + self.send_message(mto=self.room, mbody="This has been whispered to me:\n%(body)s" % msg, mtype='groupchat') To run this bot, type the following command in your terminal: + python3 whisper.py -j whisperbot@conversejs.org -r muc_name@muc.vvvvvvaria.org -n whisperbot -p testing \ No newline at end of file From 072950a16ecf00ea1ffcd8f5c6704048c78f457a Mon Sep 17 00:00:00 2001 From: ccl Date: Wed, 13 Jan 2021 14:47:40 +0100 Subject: [PATCH 6/9] added description for greetbot --- GreetBot/README.md | 11 +++++++++++ 1 file changed, 11 insertions(+) create mode 100644 GreetBot/README.md diff --git a/GreetBot/README.md b/GreetBot/README.md new file mode 100644 index 0000000..d12f13c --- /dev/null +++ b/GreetBot/README.md @@ -0,0 +1,11 @@ +# GreetBot + +This bot greets every time it enters a room. + +On line 33 you can change the code after "mbody=" to add your own greeting: + + self.send_message(mto=self.room, mbody='collective conditions', mtype='groupchat') + +To run this bot, type the following command in your terminal: + + python3 greet.py -d -j greetbot@conversejs.org -r muc_name@muc.vvvvvvaria.org -n greetbot -p testing \ No newline at end of file From 1b23290be89480012a244311e376286af3584760 Mon Sep 17 00:00:00 2001 From: ccl Date: Wed, 13 Jan 2021 14:49:11 +0100 Subject: [PATCH 7/9] added description for sparkbot --- SparkBot/README.md | 14 ++++++++++++++ 1 file changed, 14 insertions(+) create mode 100644 SparkBot/README.md diff --git a/SparkBot/README.md b/SparkBot/README.md new file mode 100644 index 0000000..a3f84d1 --- /dev/null +++ b/SparkBot/README.md @@ -0,0 +1,14 @@ +# SparkBot + +This bot replies to a specific word. + +On line 42, you can edit the word-to-be-responded-to after "if '": + if 'target-word' in msg['body']: + +On line 44, you can edit the response options after "wordslist = ['": + + wordslist = ['a response to the target-word.'] + +To run this bot, type the following command in your terminal: + + python3 spark.py -d -j sparkbot@conversejs.org -r muc_name@muc.vvvvvvaria.org -n sparkbot -p testing \ No newline at end of file From dee348a433d34dd76babba55ff5daeed956851f2 Mon Sep 17 00:00:00 2001 From: ccl Date: Wed, 13 Jan 2021 14:50:21 +0100 Subject: [PATCH 8/9] added description for transitbot --- TransitBot/README.md | 15 +++++++++++++++ 1 file changed, 15 insertions(+) create mode 100644 TransitBot/README.md diff --git a/TransitBot/README.md b/TransitBot/README.md new file mode 100644 index 0000000..cb7d5fc --- /dev/null +++ b/TransitBot/README.md @@ -0,0 +1,15 @@ +# TransitBot + +This bot announces when someone enters or leaves the space. + +On line 39, you can edit the message when someone enters by editing what goes after 'mbody="': + + mbody="%s has just entered..." % (presence['muc']['nick']), + +On line 45, you can edit the message when someone leaves by editing what goes after 'mbody="': + + mbody="%s has just left..." % (presence['muc']['nick']), + +To run this bot, type the following command in your terminal: + + python3 transit.py -d -j transitbot@conversejs.org -r muc_name@muc.vvvvvvaria.org -n transitbot -p testing \ No newline at end of file From 6b9de686804b3ebc241a204dcc5175c319f941e5 Mon Sep 17 00:00:00 2001 From: ccl Date: Wed, 13 Jan 2021 14:52:00 +0100 Subject: [PATCH 9/9] added description for glossbot --- GlossBot/README.md | 13 +++++++++++++ 1 file changed, 13 insertions(+) create mode 100644 GlossBot/README.md diff --git a/GlossBot/README.md b/GlossBot/README.md new file mode 100644 index 0000000..5276ed5 --- /dev/null +++ b/GlossBot/README.md @@ -0,0 +1,13 @@ +# GlossBot + +This bot will add words and expressions to a file. + +You can use this code in the chat by calling three different options in the chat: + + "@glossary-add word": adds the word "word" in the list + "@glossary-drift": returns a term from the list that was selected by chance + "@glossary-all": returns a list of all the saved expressions. + +To run this bot, type the following command in your terminal: + + python3 gather.py -d -j gatherbot@conversejs.org -r muc_name@muc.vvvvvvaria.org -n gatherbot -p testing -o . \ No newline at end of file