<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://mywikibiz.com/index.php?action=history&amp;feed=atom&amp;title=Module%3AMass_notification</id>
	<title>Module:Mass notification - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://mywikibiz.com/index.php?action=history&amp;feed=atom&amp;title=Module%3AMass_notification"/>
	<link rel="alternate" type="text/html" href="https://mywikibiz.com/index.php?title=Module:Mass_notification&amp;action=history"/>
	<updated>2026-07-10T08:32:59Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.35.3</generator>
	<entry>
		<id>https://mywikibiz.com/index.php?title=Module:Mass_notification&amp;diff=478679&amp;oldid=prev</id>
		<title>Zoran: Pywikibot 6.4.0</title>
		<link rel="alternate" type="text/html" href="https://mywikibiz.com/index.php?title=Module:Mass_notification&amp;diff=478679&amp;oldid=prev"/>
		<updated>2021-07-16T04:45:50Z</updated>

		<summary type="html">&lt;p&gt;Pywikibot 6.4.0&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;-- This module sends out notifications to multiple users.&lt;br /&gt;
&lt;br /&gt;
local MAX_USERS = 50 -- The Echo user limit as of September 2015.&lt;br /&gt;
local GROUP_PAGE_PATH = 'Module:Mass notification/groups/'&lt;br /&gt;
local NO_NAME_ERROR = 'no group name was specified'&lt;br /&gt;
local LOAD_ERROR = 'the group &amp;quot;[[$1|$2]]&amp;quot; was not found'&lt;br /&gt;
local MAX_USER_ERROR = 'attempted to send notifications to more than $1 users'&lt;br /&gt;
local NO_USER_ERROR = 'could not find any usernames in $1'&lt;br /&gt;
local INTRO_BLURB = 'Notifying all members of $1'&lt;br /&gt;
	.. ' &amp;lt;small&amp;gt;([[Template:Mass notification|more info]]'&lt;br /&gt;
	.. &amp;quot; '''·''' &amp;quot;&lt;br /&gt;
	.. '&amp;lt;span class=&amp;quot;plainlinks&amp;quot;&amp;gt;[$2 opt out]&amp;lt;/span&amp;gt;)&amp;lt;/small&amp;gt;: '&lt;br /&gt;
&lt;br /&gt;
local p = {}&lt;br /&gt;
&lt;br /&gt;
local function message(msg, ...)&lt;br /&gt;
	return mw.message.newRawMessage(msg):params{...}:plain()&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function makeWikitextError(msg)&lt;br /&gt;
	return string.format(&lt;br /&gt;
		'&amp;lt;strong class=&amp;quot;error&amp;quot;&amp;gt;Error: %s.&amp;lt;/strong&amp;gt;',&lt;br /&gt;
		msg&lt;br /&gt;
	)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.groupSubmodule(frame)&lt;br /&gt;
	-- Returns either the group link or the group name, depending on whether&lt;br /&gt;
	-- the submodule can be found. For use in edit notices.&lt;br /&gt;
	local groupName = frame.args[1]&lt;br /&gt;
	local success, data = pcall(mw.loadData, GROUP_PAGE_PATH .. groupName)&lt;br /&gt;
	if success and type(data) == 'table' and data.group_page then&lt;br /&gt;
		return string.format('[[%s|%s]]', data.group_page, groupName)&lt;br /&gt;
	else&lt;br /&gt;
		return groupName&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p._main(groupName)&lt;br /&gt;
	-- Validate input.&lt;br /&gt;
	if type(groupName) ~= 'string' then&lt;br /&gt;
		return makeWikitextError(NO_NAME_ERROR)&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	local groupSubmodule = GROUP_PAGE_PATH .. groupName&lt;br /&gt;
&lt;br /&gt;
	-- Load the group submodule and check for errors.&lt;br /&gt;
	local data&lt;br /&gt;
	do&lt;br /&gt;
		local success&lt;br /&gt;
		success, data = pcall(mw.loadData, groupSubmodule)&lt;br /&gt;
		if not success then&lt;br /&gt;
			return makeWikitextError(message(LOAD_ERROR, groupSubmodule, groupName))&lt;br /&gt;
		elseif type(data) ~= 'table' or not data[1] then -- # doesn't work with mw.loadData&lt;br /&gt;
			return makeWikitextError(message(NO_USER_ERROR, groupName))&lt;br /&gt;
		elseif data[MAX_USERS + 1] then -- # doesn't work with mw.loadData&lt;br /&gt;
			return makeWikitextError(message(MAX_USER_ERROR, tostring(MAX_USERS)))&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	-- Make the intro blurb.&lt;br /&gt;
	local introBlurb&lt;br /&gt;
	do&lt;br /&gt;
		local optOutUrl = tostring(mw.uri.fullUrl(&lt;br /&gt;
			groupSubmodule,&lt;br /&gt;
			{action = 'edit'}&lt;br /&gt;
		))&lt;br /&gt;
		local groupLink&lt;br /&gt;
		if data.group_page then&lt;br /&gt;
			groupLink = string.format('[[%s|%s]]', data.group_page, groupName)&lt;br /&gt;
		else&lt;br /&gt;
			groupLink = groupName&lt;br /&gt;
		end&lt;br /&gt;
		introBlurb = message(INTRO_BLURB, groupLink, optOutUrl)&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	-- Make the user links.&lt;br /&gt;
	local userLinks&lt;br /&gt;
	do&lt;br /&gt;
		local userNamespace = mw.site.namespaces[2].name&lt;br /&gt;
		local links = {}&lt;br /&gt;
		for i, username in ipairs(data) do&lt;br /&gt;
			username = tostring(username)&lt;br /&gt;
			links[i] = string.format(&lt;br /&gt;
				'[[%s:%s]]',&lt;br /&gt;
				userNamespace,&lt;br /&gt;
				username&lt;br /&gt;
			)&lt;br /&gt;
		end&lt;br /&gt;
		userLinks = string.format(&lt;br /&gt;
			'&amp;lt;span style=&amp;quot;display: none;&amp;quot;&amp;gt;(%s)&amp;lt;/span&amp;gt;',&lt;br /&gt;
			table.concat(links, ', ')&lt;br /&gt;
		)&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	return introBlurb .. userLinks&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.main(frame)&lt;br /&gt;
	local args = require('Module:Arguments').getArgs(frame, {&lt;br /&gt;
		wrappers = 'Template:Mass notification'&lt;br /&gt;
	})&lt;br /&gt;
	local groupName = args[1]&lt;br /&gt;
	return p._main(groupName)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
return p&lt;/div&gt;</summary>
		<author><name>Zoran</name></author>
	</entry>
</feed>